将C ++ DLL添加到C#项目中

时间:2010-05-22 19:02:15

标签: c# c++ visual-studio-2010 lame

我正在尝试在C#项目中使用LAME中的lame_enc.dll文件,但添加内容似乎是不可能的。

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

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

4 个答案:

答案 0 :(得分:9)

您只能添加托管程序集作为托管项目的引用。在这种情况下我通常做的是将其添加为ressource而不是“copy local”设置。这样,DLL就与您的项目绑定并一起部署。然后我使用DllImport手动从该DLL中获取所需的API。

答案 1 :(得分:6)

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

答案 2 :(得分:4)

要在C#中使用非托管dll(本机C ++),您必须使用DllImport,而不是在visual studio中添加对项目的引用(这就是您收到错误的原因)。

Here is the documentation of DllImport from the MSDN.

答案 3 :(得分:3)

您需要使用PInvoke来调用本机lame dll中的函数。但是,您只能调用已导出为“C”样式的函数。

您可以使用像“PInvoke Interop Assistant”这样的工具,它可以帮助您在计算PInvoke呼叫签名时从C#拨打您的本机dll:

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