OGRE的SDK編譯安裝 version 1.9 (不完全記錄)

編譯環境

OS: Windows 10
IDE: Visual Studio 2015 community
OGRE: https://bitbucket.org/sinbad/ogre/ branch 1.9

最初編譯 OGRE 2.1 版本遇到問題

編譯sdk並沒有什麼大問題,但是在cmake裏選擇編譯Samples之後,編譯就會報很多錯誤。檢查了一下發現是Samples裏的一些項目用的API還是舊的代碼版本里的。比如:
Ogre::OverlaySystem 應該變爲 Ogre::v1::OverlaySystem,
涉及到的文件有 Samples/Common/include/ 下的三個文件

  • Sample.h
  • SampleContext.h
  • SdkSample.h

此外還有很多個Sample項目裏面報了錯誤,爲了避免一個個去改,我選擇去編譯1.9版本的Ogre的sdk和samples了。因爲本來只是爲了參考代碼學習一下,所以沒必要糾結於最新的版本。

需要注意的一些事

  1. 需要安裝Direct3d的sdk,d3d9或者d3d11。如果沒有安裝的話,在cmake-gui裏面需要取消勾選對應的選項:

    我只安裝了Direct3d 9

不然等到編譯的時候會報錯說找不到對應的內容。
2. OgreMain項目需要設置命令行參數 /bigobj
直接Build可能會報錯,因爲生成的obj文件段數太多超過限制,爲了擴大限制需要打開OgreMain項目的properties界面,在C/C++ -> Command Line 裏面的Additional Options里加上 /bigobj。注意需要空格與其他選項分開。
3. Unresolved external symbol __vsnprintf … (in dxerr.lib)
我在Release編譯時,RenderSystem_Direct3D9項目遇到了這個問題。搜了一下stackoverflow發現,是微軟的C runtime更新導致的不兼容,__vsnprintf 成了 _vsnprintf 之類的問題。相關的問題有:
- unresolved external symbol sprintf and sscanf in visual studio 2015
- unresolved external symbol vsnprintf in dxerr lib

我嘗試了一下里面的解決方法,其中把 legacy_stdio_definitions.lib 加入RenderSystem_Direct3D9項目的Linker的Input裏就可以了。
在Properties界面,Linker->Input界面的Additional Dependencies里加入 legacy_stdio_definitions.lib 即可。
如圖

發佈了33 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章