- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Visual Studio 中的类库项目在 C++ 中创建了一个 dll。我需要从 C# 应用程序调用 dll 中的方法。
我知道有两种方法。一种是将dll工程引用添加到C#工程中或者使用DllExport导出方法。但是,当我尝试两种方式时,在运行时调用 dll 方法时,它总是会出现以下错误。
TestClient.exe 中出现类型为“System.BadImageFormatException”的未处理异常附加信息:尝试加载格式不正确的程序。 (HRESULT 异常:0x8007000B)
我能知道如何避免这个问题吗?
提前致谢!
最佳答案
此错误意味着您正在尝试将 32 位 DLL 加载到 64 位进程或将 64 位 DLL 加载到 32 位进程。在 Windows 上,DLL 的位数必须与进程的位数匹配才能正确加载。
您的 native DLL 是 32 位还是 64 位?在您的 C# 项目build设置中,您的目标平台是什么?如果您进入 C# 项目属性,您可以转到“构建”选项卡并将“平台目标”更改为特定的内容,例如 x86 或 x64,以匹配您的 native DLL 的构建平台。
另一种选择是构建 native DLL 以匹配 C# 应用程序的平台。但是,如果 C# 应用程序的平台是 AnyCPU,它将在 32 位 Windows 上以 32 位运行,在 64 位 Windows 上以 64 位运行。因此,您需要 32 位和 64 位版本的 native DLL。
我建议将 C# 应用程序的平台设置为特定的平台(x86、x64),然后更改 native DLL 的平台以匹配。
关于c# - 如何从 C# Windows 应用程序项目调用 C++ dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2928270/
我是一名优秀的程序员,十分优秀!