日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VS2015编译程序兼容XP

發(fā)布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VS2015编译程序兼容XP 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前記

這幾天被2015編譯的程序要在xp上運行搞得想死,各種試,真的比寫代碼要痛苦,在此記下一些要點以防下次使用。。。

一、動態(tài)鏈接發(fā)布

?

  1. 項目菜單->項目屬性->配置屬性->常規(guī)->平臺工具集,選擇“Visual Studio 2015 - Windows XP (v140_xp)”;

  2. 項目菜單->項目屬性->配置屬性->常規(guī)->MFC的使用,你的MFC的使用應(yīng)是這個 在共享 DLL 中使用 MFC

  3. 項目菜單->項目屬性->鏈接器->系統(tǒng)->子系統(tǒng)->控制臺或窗口windows(根據(jù)你的項目類型選擇),第二項版本號設(shè)成5.01。

  4. C/C++->代碼生成->運行庫,選擇“多線程DLL(/MD)";注意區(qū)別,多線程DLL調(diào)試,是動態(tài)鏈接時選擇,而且在debug下使用,而多線程DLL在發(fā)布release時選擇,此外還有多線程,多線程調(diào)試,此為靜態(tài)鏈接時選擇。

  5. 把2015的update裝了,否則你會發(fā)現(xiàn)沒有Visual Studio 2015 - Windows XP (v140_xp)這個選項。

?

注:如果你調(diào)用了別人的DLL(LoadLibrary),被調(diào)用的庫也要按這種方式編譯,否則可能加載庫失敗。

二、靜態(tài)鏈接發(fā)布

?

  1. 項目菜單->項目屬性->配置屬性->常規(guī)->平臺工具集,選擇“Visual Studio 2015 - Windows XP (v140_xp)”;

  2. 項目菜單->項目屬性->配置屬性->常規(guī)->MFC的使用,你的MFC的使用應(yīng)是這個?在靜態(tài)庫中使用 MFC

  3. 項目菜單->項目屬性->鏈接器->系統(tǒng)->子系統(tǒng)->控制臺或窗口windows(根據(jù)你的項目類型選擇),第二項版本號設(shè)成5.01。

  4. C/C++->代碼生成->運行庫,選擇“多線程(/MT)";注意區(qū)別,多線程DLL調(diào)試,是動態(tài)鏈接時選擇,而且在debug下使用,而多線程DLL在發(fā)布release時選擇,此外還有多線程,多線程調(diào)試,此為靜態(tài)鏈接時選擇。

  5. 把2015的update裝了,否則你會發(fā)現(xiàn)沒有Visual Studio 2015 - Windows XP (v140_xp)這個選項。

注:動態(tài)方式不行再使用靜態(tài)方式,因為我這邊的程序都是動態(tài)編譯的。要是改成靜態(tài)麻煩死。

下面以我的一個程序,依賴boost庫來說明:

一開始選擇動態(tài)編譯怎么樣都不能運行,提示這是一個無效的win32應(yīng)用程序,真嗶了狗了,沒辦法,使用大招靜態(tài)編譯。

設(shè)置好上面說的選項,然后重新編譯boost庫,我的boost版本為boost_1_64_0,我這邊的boost的庫是從同事那邊弄來的,可能編譯選項它有默認(rèn)設(shè)置,這個我沒有深究,總之,我改成靜態(tài)編譯

打開VS2015 x86控制臺,運行 b2.exe link=static runtime-link=static ,這兩個參數(shù)有什么區(qū)別,我也沒搞懂,就編吧,然后出現(xiàn)successfully built,非常高興啊,沒有出現(xiàn)意外,此時庫名字libboost_atomic-vc140-mt-s-1_64.lib, 看見沒mt-s 靜態(tài)編譯非調(diào)式用的,對應(yīng)的調(diào)式用的libboost_atomic-vc140-mt-sgd-1_64.lib,gd表示調(diào)試。??

下面再看下動態(tài)的是什么樣的。libboost_atomic-vc140-mt-1_64.lib 注意沒用-s ,這是非調(diào)試版,對應(yīng)的調(diào)試版應(yīng)該有g(shù)d,但是這個boost還會生成dll,我實在搞不懂這都是什么跟什么,但是只要我能運行,不管它。。。

然后在我的xp虛擬機(jī)上運行然后發(fā)現(xiàn),無法定位輸入點getlogicalprocessorInformation于動態(tài)鏈接庫Kernel32.dll(動態(tài)的可以),臥槽這又是什么鬼東西,然后搜索,發(fā)現(xiàn)我的系統(tǒng)是xp sp2 ,好像sp3可以,然后放到sp3上,運行成功了,但是sp2 ,sp1不行,沒辦法好歹也算進(jìn)步了。。。

?

總結(jié)

以上是生活随笔為你收集整理的VS2015编译程序兼容XP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。