我在64位系统上调用32位非托管DLL的函数。 我获得的是: 函数
BadImageFormatException:尝试加载格式不正确的程序。 (HRESULT异常:0x8007000B) ui
起初,我将个人项目设置为Any CPU平台,所以我将它们都更改成x86,但此错误仍在发生。 这真的是我所知道的惟一解决方案。 spa
DLL没有损坏或任何东西,由于我能够将它们与其余程序一块儿使用(我没有源代码)。 我想也许它没有找到依赖,但我检查了,他们都在那里。 另外,在这种状况下不会抛出DllNotFoundException
吗? code
我还能够作些什么? 在您说“使用64位非托管DLL”以前,让我指出没有一个。 ;) orm
这篇文章有点偏离主题,但搜索此错误消息将我带到了这里。 get
若是您正在经过团队系统构建并得到此错误,则构建定义过程选项卡具备“MSBuild平台”设置。 若是将其设置为“自动”,则可能会遇到此问题。 将其更改成“X86”也能够解决错误。 io
在个人状况下,我在C#中使用本机DLL。 此DLL依赖于其余几个缺失的DLL。 一旦添加了其余DLL,一切正常。 form
我用“Windows”方式解决了这个问题。 检查完全部设置,清理解决方案并重建后,我只需关闭解决方案并从新打开便可。 而后它工做,因此VS可能没有在清洁过程当中摆脱一些东西。 当逻辑解决方案不起做用时,我一般会转向不合逻辑的(或看似不合逻辑的)。 Windows不会让我失望。 :) 搜索
若是您使用的是任何CPU ,则在选中“ 首选32位”选项时可能会遇到此问题: bug
确保在项目属性的Build选项卡中取消选中此选项!
在Visual Studio中 ,右键单击您的项目 - >在左侧窗格中单击“ 生成”选项卡,
在Platform Target下选择x86(或者更常见的是与您连接的库匹配的体系结构 )
我但愿这能够帮助别人! :)