我有一个第三方 C++ .dll,它导出了一些我希望从 C# 使用的类。该 dll 是一个 Win32 应用程序,我正在使用 VS2013 在 Windows 8.1 上工作。当我设置在“任何 CPU”下运行的 C# 程序时,出现错误“System.BadImageFormatException”。我读过其他地方,这可能是由 x86 和 x64 组合引起的。所以我将 C# 程序重新编译为 x86。现在我得到“无法加载 DLL 'libsword.dll':找不到指定的模块”。我已确保 dll 位于正确的目录中。
所有这些在使用 Mono 的 Linux 上运行得很好。
此时,我不知道如何继续。
谢谢, 乔恩
最佳答案
当您将 DLL 中的常规 native C++ 代码视为 .NET 代码时,将抛出 BadImageFormatException。 .NET 还将代码放在 .DLL 文件中。
您需要为 C++ 代码创建 C# 声明,以便 .NET 知道如何从托管 (.NET/C#) 代码转换为 native (C++) 代码。这相当复杂,具体取决于您的第 3 方库中的代码是什么样的。我无法推测您需要做什么。
关于c# - 在 C# 中使用 C++ dll 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25798446/