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