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

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

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

虽然我想使用这个function,但我没有C ++经验。 现在我正在使用.NET框架中的Process调用lame.exe并做一些事情,但我想知道是否还有其他方法。

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

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

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

以下是MSDN中DllImport的文档。

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

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

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