用VS2013在win7下編寫的C++程序怎麼在XP下運行?

原文地址:http://blog.csdn.net/civilman/article/details/40109685

額外說明:(1)程序必須爲Dotnet 4.0及以下版本。(XP只支持Dotnet4.0及以下版本,不支持Dotnet 4.5)
(2)用C#編寫的程序,無需進行如下設置,只要在目標機的xp中安裝相應的Dotnet版本即可。


用VS2013在win7下編寫的C++程序在XP下運行的錯誤與解決。

 

1.xp下運行報錯爲:“不是有效的win32應用程序。”

解決方法:

【配置屬性】-【常規】-【平臺工具集】,選擇“VisualStudio 2013 (v120 XP)”。

注意:C#編寫的程序沒有該選項,如何解決C#的程序在XP下的運行,待解決。


2.將原動態編譯改爲靜態編譯,否則報錯爲:未找到MSVCR120D.DLL“

解決方法:

【配置屬性】-【C/C++】-【代碼生成】-【基本運行時庫】,

由默認的“多線程調試DLL(/MDd)”,改成“多線程 (/MT)”,確定之後,重新編譯。



注意:網上說這一步需要根據你的當前工程屬性Debug還是Release來選擇“Multi-threadedDebug (/MTd)”或者“Multi-threaded (/MT)”,但我不論在debug還是release模式下,均選擇“多線程/MT”,均能正常運行

 

3.【配置屬性】-【常規】-【使用MFC】,選擇“Use MFC in a Static Library”(非MFC程序可無視)。

注意:我改了這一步後,編譯報錯,原因未知。

只要做前面12步,即可在XP下運行。


4.將你的工程中依賴的所有外部庫,都按照步驟1~3重新編譯。

注意第四步很重要。如果你只完成了前三步,編譯工程發現一大堆link錯誤,那就是你第四步沒有做完整的原因了。

一個項目使用的庫中如果存在不同版本的基本運行時庫,必然導致衝突。

如果你用到的第三方庫沒有源碼,而且又不是用MTD或MT編譯的,很可能你就悲劇了。


5、網上說是還需在以下方面修改,未測試:



原文說:


項目菜單->項目屬性->鏈接器->系統->子系統->控制檯或窗口windows(根據你的項目類型選擇),第二項版本號設成5.01。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章