我正在尝试在C#项目中使用LAME中的lame_enc.dll文件,但添加内容似乎是不可能的。
我一直收到错误消息,指出无法添加引用,请检查是否可以访问,有效的程序集或COM组件。
我没有C ++经验,但我想使用这个功能。现在我正在使用.NET框架中的Process
来调用lame.exe并执行其他操作,但我想知道是否还有其他方法。
答案 0 :(得分:9)
您只能添加托管程序集作为托管项目的引用。在这种情况下我通常做的是将其添加为ressource而不是“copy local”设置。这样,DLL就与您的项目绑定并一起部署。然后我使用DllImport手动从该DLL中获取所需的API。
答案 1 :(得分:6)
您必须使用P/Invoke从托管代码调用非托管API。
答案 2 :(得分:4)
要在C#中使用非托管dll(本机C ++),您必须使用DllImport,而不是在visual studio中添加对项目的引用(这就是您收到错误的原因)。
答案 3 :(得分:3)
您需要使用PInvoke来调用本机lame dll中的函数。但是,您只能调用已导出为“C”样式的函数。
您可以使用像“PInvoke Interop Assistant”这样的工具,它可以帮助您在计算PInvoke呼叫签名时从C#拨打您的本机dll: