Dav*_*own 448 .net 64-bit pinvoke 32-bit badimageformatexception
我在64位系统上调用32位非托管DLL的函数.我得到的是:
BadImageFormatException:尝试加载格式不正确的程序.(HRESULT异常:0x8007000B)
起初,我将我的项目设置为Any CPU平台,因此我将它们都更改为x86,但此错误仍在发生.这真的是我所知道的唯一解决方案.
DLL没有损坏或任何东西,因为我可以将它们与其他程序一起使用(我没有源代码).我想也许它没有找到依赖,但我检查了,他们都在那里.另外,DllNotFoundException在这种情况下不会抛出一个吗?
我还可以做些什么?在您说"使用64位非托管DLL"之前,让我指出没有一个.;)
blu*_*001 523
如果您尝试在IIS 7(和/或64位操作系统计算机)上运行32位应用程序,您将收到相同的错误.因此,从IIS 7中,右键单击应用程序的应用程序池并转到"高级设置"并将"启用32位应用程序"更改为"TRUE".
重新启动您的网站,它应该工作.

Dav*_*own 126
不知何故,配置管理器中的Build复选框已取消选中我的可执行文件,因此它仍然使用旧的Any CPU版本运行.在我修复之后,Visual Studio抱怨它无法调试程序集,但是通过重新启动修复了这个问题.
Mar*_*ane 71
在Visual Studio中,右键单击您的项目 - >在左侧窗格中单击" 生成"选项卡,

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

我希望这可以帮助别人!:)
Den*_*nis 50
我也遇到了这个问题.在这里尝试了所有的建议,但他们没有帮助.
我找到了另一件要检查的东西,为我修好了.在Visual Studio中,右键单击项目并打开"属性".单击"编译"(或"构建")选项卡,然后单击底部的"高级编译选项".
检查下拉菜单"目标CPU".它应该与您正在构建的"平台"相匹配.也就是说,如果您正在构建"任何CPU",那么"目标CPU"应该说"任何CPU".通过激活它们来检查所有平台并检查此设置.
pai*_*boo 42
如果在单击绿色箭头按钮运行应用程序时遇到此错误,但仍希望以64位运行该应用程序.您可以在VS 2013,2015和2017中执行此操作
转至:工具>选项>项目和解决方案> Web项目>使用64位版本的IIS Express
Dre*_*kes 34
如果您使用的是任何CPU,则在选中" 首选32位"选项时可能会遇到此问题:

确保在项目属性的Build选项卡中取消选中此选项!
这篇文章有点偏离主题,但搜索此错误消息将我带到了这里.
如果您正在通过团队系统构建并获得此错误,则构建定义过程选项卡具有"MSBuild平台"设置.如果将其设置为"自动",则可能会遇到此问题.将其更改为"X86"也可以解决错误.
小智 8
在我的情况下,我在C#中使用本机DLL.此DLL依赖于其他几个缺失的DLL.一旦添加了其他DLL,一切正常.
在 Visual Studio 2019 中,当我想运行测试(直接来自 VS 的 MSTest)时,我遇到了类似的问题。就我而言,我只有一个 x64 本机 DLL,并且收到了此错误消息。首先,我认为这是因为 Visual Studio 以 x86 运行,但此页面帮助我解决了问题:
它说
我做了两个(我明确设置了 x64),然后我的测试开始工作。
| 归档时间: |
|
| 查看次数: |
464056 次 |
| 最近记录: |