前言
本篇編譯osg3.4.0的msvc2017x64版本,之前使用的都是mingw32版本。
下載3.4.0版本。
因為是64位,可以透過後續配置cmake用x64,也可以直接選擇構架:
繼續:
要修改下安裝的路徑,方便提取庫:
預設是32位,發現後續vs更改不行,得在cmake處更改,檢視“入坑一”,修改如下圖:
修改後需要重新configure。
裝了多個vs,可能會開啟錯誤,如果開啟不是使用vs2017就自行使用
編譯debug版本,先建立x64版本
卡住了,等一會兒:
然後編譯:
編譯release版本:
安裝debug版本:
安裝release版本:
檢查install的檔案:
移植Demo過來,復現過去的兩個bug,一個是從相機旋轉中心,一個是球體透明截面
測試都使用純C++原始程式碼修改,非自建的引擎,也不是osgQt。
這是個常規問題了,關鍵在於已經設定了x64怎麼出來還是x86_32,好幾年沒弄,又卡了一下。
這是平臺解決方案是x64,但是預設沒有x64,還得新增配置,又由於新增解決方案卡住了,筆者就只新增活動方案,下面沒點了,正確要勾選如下圖:
經過測試還是不行,再往前退,在CMake配置得時候指定x64:
在CMake配置得時候指定x64:
然後重新再來一遍即可。
執行直接崩,一般是dll依賴缺少,檢查了不缺。
使用純Qt程式,排除掉osg的,使用純Qt程式,也是崩潰,本身Qt裝的可能有問題,繼續研究
新建了個新的是可以:
懷疑是osg得shadow資料夾內部有問題,刪掉shadow,再執行裸的只有介面的程式(去掉了osg的其他依賴):
可以執行:
然後複製新增osg發現崩了,發現沒有複製dll過去,檢查指令碼:
有問題,以為是沒複製過去覆蓋32位的,複製過去也崩了,單獨執行,還是0x7B錯誤,這是庫連線錯誤,不理解了,後來經過dll對比,發現時間與32位一致,那麼問題的原因就是晚上有點事,第二天上午才看,以為編了覆蓋了64位的,實際沒編譯,install還是32位的,所以編譯寫程式還是連續時間比較好,第二天:
重新編譯並且install發現,時間還是沒變,只好刪除了build資料夾重新弄了,以為是粗心,結果不是,那麼點選重新編譯:
檢查了是生成了:
但是install複製過去就是之前的時間:
搞蒙了都(理論上一個build也可以更改引數然後install到不同資料夾,但是這裡不管了)。
build全刪掉,一刀切,從頭新建build重新來一遍,確保生成了64位的並提取出來。
這裡還少了release庫,弄完好,再測是沒問題了。