c# - 在 C# 中使用 C++ dll 对象

标签 c# c++ mono

我有一个第三方 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/

相关文章:

c# - System.Diagnostics.Trace 与 ILogger

c# - 如何使用来自另一个 .NET 程序集的 ComVisible .NET 库作为 COM 库。

c++ - 使用 std::vector::iterator 更改存储在 std::vector 中的值?

.net - 通过 Wine 在 Mono 中使用 P/Invokes

c++ - 我可以使用 xbuild 在 Linux 上编译 Visual C++ 项目吗?

c# - 以无边界形式绘制夹具

C# 不运行或删除文件

c++ - 无法推断 basic_string 的模板参数

c++ - 使用 C++ 与 libpq 链接错误

c# - 在单声道中使用 USB 设备