1. 程式人生 > >編譯平臺與目標平臺不一致帶來的麻煩

編譯平臺與目標平臺不一致帶來的麻煩



今天VS2010編的EXE在XP上顯示不是有效的win32應用程式,為此,我們需要編寫出對環境依賴小的,能到處跑的程式;

一、X86,即一般普通PC上跑的程式版本,不用修改工程屬性

二、X64

1、設定工程平臺---會在工程目錄下生成  X64 資料夾

在工具欄--->生成--->配置管理器 視窗

設定“活動解決方案平臺”和“平臺” 為X64,“平臺”那裡沒有X64,就點選新建。

2、選擇目標機器平臺

在工具欄--->專案--->xx屬性 視窗

選擇  “配置屬性”--->"連結器"--->"高階"--->"目標計算機"--->"MachineX64"

 三、DLL依賴問題

1、取消依賴CLR     

選擇  “配置屬性”--->"C/C++"--->"公共語言執行時支援"  設定為無

2、設定MFC庫連線方式

“配置屬性”--->"常規"--->"MFC使用"

設定為   “使用標準windows庫“  或 ”在靜態庫中使用MFC“

3、設定程式碼生成執行庫

“配置屬性”--->"C/C++"--->"程式碼生成"

設定 ”執行庫” 為 "多執行緒/MT"

附上CSDN論壇上的一個版主的說明:

1. 確定用的是32位編譯器
2. 確定不使用/clr選項:這將依賴.NET
3. 確定使用/MT靜態連結CRT
這樣編譯出來的程式自然可以到處跑。

四、可能出現的情況

1、X64下工程平臺和機器目標平臺不一致報錯

五、備註

1、活動解決方案平臺,這個和目標程式執行沒什麼關係,應該不用設定。

驗證 “活動解決方案平臺” 為X64 , 專案平臺設定為“WIN32”,在X86 xp下還是能執行,生成程式的目錄在Release下,而不是X64/Release

2、專案平臺改變,目標平臺也會改變

驗證 “目標計算機” 設定為“MachineX64” , 切換工程平臺為WIN32時,檢視 “目標計算機” 設定已變成 “MachineX86”

3、X86執行X64編譯出來的程式報錯資訊如下: