我是新來的C++。我用VS 2008 Professional製作了一個C++程序。我開始使用爲我創建窗口的Win32模板。我將其編譯到Vista 32上。我將編譯好的exe文件帶到我的舊版XP SP2計算機上,它告訴我應用程序配置不正確。有什麼我做錯了嗎?我如何讓平臺獨立?應用程序配置不正確錯誤C++
感謝
我是新來的C++。我用VS 2008 Professional製作了一個C++程序。我開始使用爲我創建窗口的Win32模板。我將其編譯到Vista 32上。我將編譯好的exe文件帶到我的舊版XP SP2計算機上,它告訴我應用程序配置不正確。有什麼我做錯了嗎?我如何讓平臺獨立?應用程序配置不正確錯誤C++
感謝
嘗試安裝Microsoft Visual C++ 2008 SP1 Redistributable Package,並確保您使用的應用程序的發佈版本。
您的目標系統缺少該可執行文件所需的運行時文件。
你可以找到它:Microsoft Visual C++ 2008 Redistributable Package (x86)或Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)
確保WINVER設置爲包括WinXP的一個版本 - 它看起來像Windows的缺省目標版本爲VS 2008是Vista的(爲0x0600)。
設置以下預處理器定義:
#define WINVER 0x0501
優選使用項目屬性 「C/C++ /預處理器/預處理器定義」 或中的cl.exe命令行上-D選項。也有可能有一個targetver.h文件具有此設置(取決於您最初創建項目的方式)。
有關更多詳細信息,請參閱http://msdn.microsoft.com/en-us/library/aa383745(VS.85).aspx。
這是一個好主意,但可能不是基於正在發生的錯誤的問題。 – crashmstr 2009-09-17 18:19:19
您可以使用Dependency Walker來查找目標WinXP系統上缺少哪些組件。然後你應該安裝適當的可再分發包。
在項目屬性中,將"C/C++ -> Code Generation -> Runtime Library"
設置爲"Multi-threaded (Debug)"
。重建之後,應用程序將不再依賴於msvcr90.dll
。然而,應用程序二進制文件會稍大。
當然,對於發佈版本,您應該使用「多線程」(而不是調試)。如果你的應用程序本身由多個DLL組成,這也是一個壞主意。 – MSalters 2009-09-18 10:44:14
那麼我怎麼能做一個沒有依賴的應用程序,這有點令人失望,因爲我從.Net過渡到希望不必擔心這個東西;我可以使用VC 6還是其他? – jmasterx 2009-09-17 17:54:01
您可以通過靜態鏈接到運行時支持庫來避免依賴關係。 – 2009-09-17 17:58:23