OSG開發筆記(三十六):osg3.4.0基於windows平臺msvc2017x64編譯器編譯並移植Demo

长沙红胖子Qt创微智科發表於2024-12-02

前言

  本篇編譯osg3.4.0的msvc2017x64版本,之前使用的都是mingw32版本。

OSG編譯

步驟一:下載解壓

  下載3.4.0版本。
  在這裡插入圖片描述

步驟二:使用cmake配置

  在這裡插入圖片描述

  在這裡插入圖片描述

  在這裡插入圖片描述

  因為是64位,可以透過後續配置cmake用x64,也可以直接選擇構架:
  在這裡插入圖片描述

  繼續:
  在這裡插入圖片描述

  要修改下安裝的路徑,方便提取庫:
  在這裡插入圖片描述

  預設是32位,發現後續vs更改不行,得在cmake處更改,檢視“入坑一”,修改如下圖:
  在這裡插入圖片描述

  修改後需要重新configure。

步驟三:生成工程

  在這裡插入圖片描述

  在這裡插入圖片描述

步驟四:開啟vs2017開啟工程

  在這裡插入圖片描述

  裝了多個vs,可能會開啟錯誤,如果開啟不是使用vs2017就自行使用
  在這裡插入圖片描述

步驟五:VS2017編譯

  編譯debug版本,先建立x64版本
  在這裡插入圖片描述

  卡住了,等一會兒:
  在這裡插入圖片描述

  然後編譯:
  在這裡插入圖片描述

  在這裡插入圖片描述

  編譯release版本:
  在這裡插入圖片描述

  在這裡插入圖片描述

  在這裡插入圖片描述

步驟六:安裝到目標位置

  安裝debug版本:
  在這裡插入圖片描述

  在這裡插入圖片描述

  安裝release版本:
  在這裡插入圖片描述

  在這裡插入圖片描述

  檢查install的檔案:
  在這裡插入圖片描述

OSG原Demo遷移

  移植Demo過來,復現過去的兩個bug,一個是從相機旋轉中心,一個是球體透明截面
  測試都使用純C++原始程式碼修改,非自建的引擎,也不是osgQt。
  在這裡插入圖片描述

入坑

入坑一:模組計算機型別“x86”與目標計算機型別“x64”衝突

問題

  這是個常規問題了,關鍵在於已經設定了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庫,弄完好,再測是沒問題了。

相關文章