我正在尝试在 C# 项目中使用来自LAME的 lame_enc.dll 文件,但添加这个东西似乎是不可能的。
我不断收到一条错误消息,提示无法添加引用,请检查是否可访问、有效的程序集或 COM 组件。
我没有 C++ 经验,但我想使用该功能。现在我正在使用Process
.NET 框架来调用 lame.exe 并做一些事情,但我想知道是否有另一种方法。
我正在尝试在 C# 项目中使用来自LAME的 lame_enc.dll 文件,但添加这个东西似乎是不可能的。
我不断收到一条错误消息,提示无法添加引用,请检查是否可访问、有效的程序集或 COM 组件。
我没有 C++ 经验,但我想使用该功能。现在我正在使用Process
.NET 框架来调用 lame.exe 并做一些事情,但我想知道是否有另一种方法。
您只能将托管程序集添加为对托管项目的引用。在这种情况下,我通常做的是将其添加为资源,而不是使用“复制本地”设置。这样,DLL 就绑定到您的项目并与您的项目一起部署。然后我使用DllImport从该 DLL 手动获取我需要的 API。
您必须使用P/Invoke从托管代码调用非托管 API。
要在 C# 中使用非托管 dll(本机 C++),您必须使用 DllImport,而不是在 Visual Studio 中添加对项目的引用(这就是您收到错误的原因)。
您将需要使用 PInvoke 调用本机 lame dll 中的函数。但是,您将只能调用已导出为“C”样式的函数。
您可以使用“PInvoke Interop Assistant”之类的工具来帮助您计算 PInvoke 调用签名以从 C# 调用您的本机 dll: