簡體   English   中英

在 64 位機器上使用 Visual Studio 編譯 32 位應用程序

[英]Compiling 32-bit application using Visual Studio on a 64-bit machine

我正在嘗試在 Windows 7 全新安裝的 64 位機器上使用 Visual Studio 2010 編譯用 C 編寫的簡單 32 位 Hello World 應用程序。 在安裝 Visual Studio 后,我還為 Windows 7 和 .NET Framework 4 安裝了“Windows SDK”。 我構建了選擇“Win32”作為平台的應用程序。 它適用於 Windows 7,但如果我使用 Windows XP Professional 在我的 32 位機器上運行該應用程序(全新安裝,沒有軟件和服務包),似乎無法正常工作,出現此錯誤:

"This application has failed to start because msvcr100.dll was not found"

如果它有用 Dependency Walker 檢測到 2 個錯誤(有關詳細信息,請參閱鏈接圖片):

"Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module."
"Error: Modules with different CPU types were found."

http://img820.imageshack.us/img820/4725/errordp.png (圖片)

我該如何解決? 謝謝!

運行它的機器需要運行時庫。 請參閱此MSDN 信息

這里的問題是Windows XP機器上缺少編譯程序使用的C運行時。 默認情況下,Visual Studio 2010 將使用 10.0 (msvcr100.dll) 運行時,默認情況下在 XP 上不可用。 您需要在您的機器上手動部署 C 運行時才能運行您的程序。

您可能需要閱讀以下 MSDN 文章,該文章討論了有關部署使用 Visual Studio 2010 構建的 C 應用程序的問題

工作中可能還有其他 32 / 64 問題,但這似乎是主要問題

不要相信 Dependency Walker... 它清楚地表明您的 exe 是 32 位的。 您的問題在於 VC 可再發行組件,即 CRT dll - 在您的 VS 安裝中查找 vcredist_x86.exe。 您應該在運行應用程序之前運行它。

另一種選擇是靜態鏈接 CRT。 請參閱/MT 選項 會使你的 exe 更大,但保存 vcredist 的東西。

關於運行時庫的答案是正確的。 另一種可能的解決方案是鏈接到 static 運行時庫而不是 DLL 版本。 通過這種方式,您可以構建一個可執行文件,您可以將其放到任何機器上,而無需額外的部署麻煩。

這是一個權衡,但是,在不了解您的情況的情況下,可能值得考慮。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM