2010-05-22 262 views
8

我试图在C#项目中使用LAME中的lame_enc.dll文件,但添加这个东西似乎是不可能的。将C++ DLL添加到C#项目

我不断收到一个错误,指出无法添加引用,请检查该引用是否可访问,有效的程序集或COM组件。

我没有C++的经验,但我想使用的功能。现在我使用.NET框架中的Process来调用lame.exe并执行其他操作,但是我想知道是否有其他方法。

+0

要添加到这些其他意见,如果你最终不得不制作某种包装器,那么全盘使用可能是有用的,并且使用COM可调用的包装器。这样,你可以从jscript中调用它:) 如果你在网上搜索LAME COM包装,你会得到这样的答案:http://www.mail-archive.com/[email protected]。 tuhs.org/msg02219.html – 2010-05-22 19:53:58

回答

6

你必须使用P/Invoke调用从托管代码非托管的API。

8

您只能将托管程序集添加为托管项目的引用。我通常在这种情况下做的是将其作为资源添加,而不是“复制本地”设置。这种方式将DLL与您的项目绑定并部署。然后我使用DllImport手动从该DLL中获取所需的API。

3

你将需要使用PInvoke来调用你的本地跛脚DLL中的函数。但是,只能调用已导出为“C”风格的函数。

您可以使用像“的PInvoke互操作助理”工具制定时的PInvoke调用签名,使从C#调用原生的DLL,这将有助于你:

http://clrinterop.codeplex.com/releases/view/14120