[問題] boost的幾點新手問題請賜教

作者: opaopaer (Mox)   2017-06-20 21:21:16
開發平台(Platform): (Ex: Win10, Linux, ...)
win7 x64
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
VC++ windows
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
boost library
問題(Question):
各位前輩好,第一次在貴版發問,再下畢業後程式功力已經退化到猴子程度了
現在因為工作需要得把遺物重新建置出來,有整包的方案與lib,底下有三個專案
程式是c++ 需求.netframework 4.0 ,使用boost library
起初用visual studio 2017+boost v141,發現該專案是vs 2012
=>2017內建的平台工具組沒有2012 (v110)
=>整台電腦重灌,裝vs 2012 +boost v110
=>專案compiler過,但執行偵錯的時候出錯(xxx.dll不是正確的32位元應用程式)
=>其他人有用2015重建成功的回報,目前在灌vs 2015 community
問題1:
boost部分我需要再針對2015重新build嗎?
已安裝好vs2012 且執行過bootstrap.bat及b2 install
因為當時是完全乾淨所以沒刻意修改project-config.jam;
現在打算用2015測試,是否得重新建置boost,參數要改成using msvc : 14.0 嗎?
平台工具組 Visual Studio 2012 (v110) ,2015 (v140), 2017(v141)
換句話說 ,舊專案用新的vs重建時,boost要配合舊專案(2012),還是配合2015?
問題2:
2015有無內建2012(v110)的平台工具組? (尚未測試乾淨機直接裝vs2015)
有的話直接裝vs2015 +b2 install會不會比較省事?
還是說不論用2015或2017,因為專案是2012,所以我只能升級專案,
否則就得指定為2012的平台工具組,因此boost得建v110而不是v140或v141?
問題3:
最終結果會產生sample.exe執行檔。
奇怪的是,compiler沒報錯(有warning),
偵錯時會冒出sample.dll不是正確的32位元應用程式
可是dll本來就不是應用程式呀?
而且直接進debug或release資料夾內可直接執行sample.exe,唯獨vs內不能執行...
這樣算成功嗎?還是說有可能功能異常?
感謝耐心看完這篇新手問題,謝謝
6/21 edit:
聽從jockey的建議變更起始專案有執行成功,但只有一次
該方案有4個專案(A B C D),相依性關係是
A相依於B
B相依於C、D
C、D無相依性
建置順序是CDBA
起始專案是B(編譯+執行),偵錯執行跑出上文的錯誤
起始B編譯,再切起始A執行有成功
所以起始專案要設定為最後執行的那個嗎?
作者: Jockey66666 (往事已成追憶)   2017-06-21 11:34:00
專案檔案升級成vs2017的會build不過?boost就跟著你vc版本就好了安裝2015不會有v110 toolset可以選你是不是startup project選錯了沒選到exe
作者: opaopaer (Mox)   2017-06-21 11:40:00
2012、2015、2017都build過,但都跳出同樣錯誤但若使用程式碼分析會跳出錯誤這樣到底算程式碼正確嗎?可是sample.exe的確可執行..理想狀況是原本2012就用2012開? 還是建議通通升級升級包含toolset及對象.Net framework因為一開始用vs2017+.NET 4.7有跳出.net不符的warning雖只是warning但怕有不必要的問題,就重灌改成2012+4.0現在灌完2015又強制灌4.5...可是沒有2017的warning搞得昏頭轉向的...Y
作者: Jockey66666 (往事已成追憶)   2017-06-21 13:55:00
所以我問是不是startup project選錯
作者: opaopaer (Mox)   2017-06-21 17:26:00
剛剛測試切換起始方案有成功!可是有點奇怪...我在正文補充y

Links booklink

Contact Us: admin [ a t ] ucptt.com