我采用了需要转换为32位的代码库(因此我可以使用外部32位驱动程序)。我将项目Platform Target设置为x86(下图)。都可以正常编译,但是由于某种原因在运行时会崩溃,并生成以下输出An unhandled exception of type 'System.BadImageFormatException' occurred in mscorlib.dll
。
我使用了Dependency Walker,发现链接的某些DLL是64位,位于\ System32 \中,当我希望将32位DLL位于“ SysWOW64”中时。 (下面的输出)。从输出中可以看到目录不正确,并且它们确实是64位DLL。我以为这都是由Windows管理的?
所以我的问题是,如何强制应用程序转到\ SysWOW64 \中的32位DLL?这是Windows配置设置还是项目设置?或者如何进一步诊断问题?
答案 0 :(得分:-1)
我认为您需要将平台下拉列表从活动(任何CPU)设置为32位。
Active solution platform VS Project Platform VS Platform target
根据上述情况,对于Active(任何CPU),将采用JIT来适应其运行的平台,因此,在32位平台上使用x86,在64位平台上使用x64。
另外,可能需要配置MSIL:
https://stackoverflow.com/a/10196549/1666620
- 转到“构建|配置管理器”菜单项。
- 在列表中找到您的项目,在“平台”下它将显示“ Any CPU”
- 从下拉菜单中选择“任何CPU”选项,然后选择
- 在该对话框中,从“新平台”下拉列表中选择x86,并确保在“从以下位置复制设置”下拉列表中选择了“任何CPU”。
- 点击确定
- 您将要同时为调试和发布配置选择x86。