2012-04-09 61 views
3

我有一個Win32 C++應用程序,我在運行Windows 7的PC上編譯了Microsoft Visual Studio C++ express 2010.該應用程序在發佈模式下用\ MT運行時間標誌(多線程)。當它應該在舊版本的Windows上運行時,exe無法運行

我的問題:當我嘗試在運行Windows Vista的筆記本電腦上運行我的.exe時,應用程序崩潰,從不打開主窗口。我使用的.exe是visual studio項目的'release'文件夾的輸出。

我已經檢查了應用程序中的大部分win32函數,它們都在windows 2000及更高版本上運行。我還將Visual Studio項目移到了Windows Vista筆記本電腦上並進行了編譯,運行良好並且工作正常。

爲什麼.exe會崩潰?這是否意味着我可以讓我的.exe在不同版本的Windows操作系統上工作的唯一方法是使用安裝程序? .exe的大小隻有175kb,所以安裝程序可能會大於輸出.exe大聲笑?

+3

您是否使用http://www.dependencywalker.com/檢查了依賴關係? – Andre 2012-04-09 06:58:27

+4

什麼是錯誤信息?始終包含該細節。 「它崩潰」是遠遠不夠的。 – 2012-04-09 07:52:03

回答

1

這聽起來像你需要VS2010 runtime re-distributable包。請注意,該鏈接適用於VS2010 SP1,如果您未使用SP1進行編譯,則可能需要不帶SP1的VS2010。

+0

不是,「用/ MT編譯」。 – 2012-04-09 07:30:10

+1

但是「編譯時使用/ MT」和「175kb」的可執行文件大小會引起一些懷疑。 – 2012-04-09 07:49:12

+0

@HansPassant,最近發佈了一個用/ MT和靜態鏈接庫編譯的VS2010 MFC C++應用程序,我發現我仍然需要運行redist才能在除Windows 7之外的其他任何程序上正確執行。我猜VC庫依賴於其他更新的更新操作系統組件版本,可以在更改後進行更新。純粹的猜測介意你;) – 2012-04-09 08:50:07

相關問題