[英].NET application is linking 64-bit DLLs instead of 32-bit like I want. Why?
我采用了需要轉換為32位的代碼庫(因此我可以使用外部32位驅動程序)。 我將項目Platform Target設置為x86(下圖)。 一切都可以正常編譯,但是由於某種原因在運行時會崩潰並產生以下輸出An unhandled exception of type 'System.BadImageFormatException' occurred in mscorlib.dll
。
我使用了Dependency Walker,發現當我希望將32位DLL放在“ SysWOW64”中時,鏈接到其中的某些DLL是位於\\ System32 \\中的64位。 (下面的輸出)。 從輸出中可以看到目錄不正確,並且它們確實是64位DLL。 我以為這都是由Windows管理的?
所以我的問題是,如何強制應用程序轉到\\ SysWOW64 \\中的32位DLL? 這是Windows配置設置還是項目設置? 或者如何進一步診斷問題?
我認為您需要將平台下拉列表從活動(任何CPU)設置為32位。
根據以上所述,對於Active(任何CPU),組件將是JIT,以適合其運行的平台,因此,在32位平台上使用x86,在64位平台上使用x64。
此外,可能有必要配置MSIL:
https://stackoverflow.com/a/10196549/1666620
- 轉到“構建|配置管理器”菜單項。
- 在列表中找到您的項目,在“平台”下它將顯示“ Any CPU”
- 從下拉列表中選擇“任何CPU”選項,然后選擇
- 在該對話框中,從“新平台”下拉列表中選擇x86,並確保在“從以下位置復制設置”下拉列表中選擇了“任何CPU”。
- 點擊確定
- 您將要同時為調試和發布配置選擇x86。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.