原文地址:http://blog.csdn.net/civilman/article/details/40109685
用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程序可無視)。
注意:我改了這一步後,編譯報錯,原因未知。
只要做前面1,2步,即可在XP下運行。
4.將你的工程中依賴的所有外部庫,都按照步驟1~3重新編譯。
注意第四步很重要。如果你只完成了前三步,編譯工程發現一大堆link錯誤,那就是你第四步沒有做完整的原因了。
一個項目使用的庫中如果存在不同版本的基本運行時庫,必然導致衝突。
如果你用到的第三方庫沒有源碼,而且又不是用MTD或MT編譯的,很可能你就悲劇了。
5、網上說是還需在以下方面修改,未測試:
原文說:
項目菜單->項目屬性->鏈接器->系統->子系統->控制檯或窗口windows(根據你的項目類型選擇),第二項版本號設成5.01。