“即使平台相同,也试图加载格式不正确的程序”

帅比萌擦擦* 提交于 2020-02-26 01:17:44

我在64位系统上调用32位非托管DLL的函数。 我得到的是:

BadImageFormatException:尝试加载格式不正确的程序。 (HRESULT异常:0x8007000B)

起初,我将我的项目设置为Any CPU平台,因此我将它们都更改为x86,但此错误仍在发生。 这真的是我所知道的唯一解决方案。

DLL没有损坏或任何东西,因为我可以将它们与其他程序一起使用(我没有源代码)。 我想也许它没有找到依赖,但我检查了,他们都在那里。 另外,在这种情况下不会抛出DllNotFoundException吗?

我还可以做些什么? 在您说“使用64位非托管DLL”之前,让我指出没有一个。 ;)


#1楼

这篇文章有点偏离主题,但搜索此错误消息将我带到了这里。

如果您正在通过团队系统构建并获得此错误,则构建定义过程选项卡具有“MSBuild平台”设置。 如果将其设置为“自动”,则可能会遇到此问题。 将其更改为“X86”也可以解决错误。


#2楼

在我的情况下,我在C#中使用本机DLL。 此DLL依赖于其他几个缺失的DLL。 一旦添加了其他DLL,一切正常。


#3楼

我用“Windows”方式解决了这个问题。 检查完所有设置,清理解决方案并重建后,我只需关闭解决方案并重新打开即可。 然后它工作,所以VS可能没有在清洁过程中摆脱一些东西。 当逻辑解决方案不起作用时,我通常会转向不合逻辑的(或看似不合逻辑的)。 Windows不会让我失望。 :)


#4楼

如果您使用的是任何CPU ,则在选中“ 首选32位”选项时可能会遇到此问题:

确保在项目属性的Build选项卡中取消选中此选项!


#5楼

Visual Studio中 ,右键单击您的项目 - >在左侧窗格中单击“ 生成”选项卡,

Platform Target下选择x86(或者更常见的是与您链接的库匹配的体系结构

我希望这可以帮助别人! :)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!