1. 程式人生 > >osg3.2.1+vs2010++QT5.4.2+win7 64編譯方法

osg3.2.1+vs2010++QT5.4.2+win7 64編譯方法

(一) VS2010

    VS2010的安裝網上教程很多,不再敘述。

(二) Qt

    在VS中開發程式,需要下載Qt安裝包和Qt的VS外掛。

    我用的版本是Qt5.4.2 for Windows(VS2010,OpenGL)、VisualStudio Add-in 1.2.5 for Qt5。

    Qt裝好後需要設定系統環境變數,在Path里加入D:\Qt\Qt5.4.2\5.4\msvc2010_opengl\bin

(三) OSG(OpenSceneGraph)

1、首先要下載程式包,可到:連結:http://pan.baidu.com/s/1bnUPZnL 密碼:s2ko,下載,它包括:OpenSceneGraph-3.2.1-rc3.zip、osg-data-master.zip、3rdParty_VC10_x86_x64.zip

2、在E盤建立一個osg3.2資料夾,將這三個檔案放入到該資料夾內並解壓,將解壓的資料夾分別改為:OpenSceneGraph、3rdParty、data,如下圖所示:


3、將3rdParty資料夾下的x64刪除,只保留x86,這是一個第三方外掛,比如要讀取文字檔案或者png檔案,都是通過這個外掛來讀取的。

4、在OpenSceneGraph資料夾下建立一個build資料夾,之後的編譯工程都在此資料夾下進行,不至於最後檔案都放在一起不好區分。

5、安裝CMake3.2,或者其他版本的也可以。

6、開啟CMake (cmake-gui),然後將OpenSceneGraph資料夾下的CMakeLists.txt檔案拖放到CMake中,然後更改編譯路徑,如下圖所示:


7、點選Configure按鈕,然後在彈出的對話方塊中選擇VS2010,如下圖所示:


8、點選完成之後,會出現以下介面:


9、修改ACTUAL_3RDPARTY_DIR目錄,改成D:/osg3.2/3rdParty/x86,注意:如果不更改目錄選擇預設的,有可能第三方外掛有部分會沒有,比如讀取文字字型外掛以及讀取png圖片外掛,沒有這些外掛就無法讀取字型和圖片,然後修改CMAKE_INSTALL_PREFIX安裝目錄,就是將庫檔案以及bin檔案安裝到那個位置,這裡我們選擇:E:/osg3.2/OpenSceneGraph,並且將BUILD_OSG_EXAMPLES打上對勾,配置如下圖所示:


10、點選Configure之後會出現如下圖所示,然後將BUILD_MFC_EXAMPLE和Advanced打上對勾,如下圖所示:


<!—

如果想要生成Qt相關的工程,也要選擇build openthreads with Qt;

預設勾選的   (注意,QT的path路徑必須設定好

其他的選項也要逐一檢查下;

如果有多個Qt版本的話記得選擇正確的版本;

我的情況是,安裝了480版本,自己編譯了550,程式匹配的是480,但是自己編譯的Qt沒有相應的庫,比如D:\Qt\4.8.0\plugins\designer\arthurplugin.dll,所以在此處就將就了下,沒有選擇自己編譯的庫,用的安裝的480版本;

-->


11、再次點選Configure,最後就會出現如下介面:


如果這過程中下面的這個區域:


出現了紅色的亂碼,我提醒下可能是跟你的VS10的一些預設專案檔案存放的路徑有關,之所以會亂碼是因為可能上面說到的路徑有中文。所以建議不要去修改VS10的一下預設的存放的路徑,避免不必要的錯誤。當然隨著這步勾選上BUILD_MFC_ EXAMPLE,正常的情況應該是中間區域的紅色會全部消失,但是下面的區域你去檢視會發現任然有些紅色的語句警告,這無關緊要。可繼續進行下一步。

  12、最後點選Generate按鈕,最後生成相應的工程,可在D:\osg3.2\OpenSceneGraph\build資料夾下生成相應的資訊,如下圖所示:


13、開啟OpenSceneGraph.sln進行編譯,在vs中選擇批處理->然後選擇ALL_BUILD的Debug和Release,如下圖所示,然後選擇生成:


14、點選生成之後就進入了編譯,這個過程大概要4個小時,如下圖所示,編譯全部成功


15、編譯完成之後再次開啟批處理,將ALL_BUILD的Debug和Release對勾去掉,然後選擇INSTALL的Debug和Release版本,點選生成,如下圖所示:


16、這個過程就時間就很短了,最後生成結果如下圖所示:


17、到此osg編譯完成。

__________________________——————————————————————————————————

六.環境變數設定

右擊“計算機”,然後“屬性”,在計算機屬性視窗的左邊有個高階系統設定,

對系統變數設定如下:

OSG_FILE_PATH: D:\OSG\data      若無此變數,自己在電腦中新增  (沒有冒號,注意)

PATH:D:\OSG\OpenSceneGraph\build\bin;

可在命令列進行測試osgversion,osglogo,osgviewer cow.osg。

七.新建OSG專案測試

a) 在VS2010下新建WIN32控制檯程式,空白

b) 新增一個cpp

c) 輸入以下程式碼:

#include<osgViewer/Viewer>

#include<osgDB/ReadFile>

int main( int argc, char **argv )

{

osgViewer::Viewer viewer;

viewer.setSceneData( osgDB::readNodeFile( "cow.osg" ) );

return viewer.run();

}

d)右鍵專案,選擇“屬性”,選擇“VC++目錄”,在包含目錄新增:D:\OSG\OpenSceneGraph\build\include

在庫目錄新增:D:\OSG\OpenSceneGraph\build\lib.

將D:\OSG\OpenSceneGraph下的bin,include,lib資料夾拷貝到D:\OSG\OpenSceneGraph\build中,選擇資料夾合併,否則將會出現基本標頭檔案連結不上

e) 開啟專案屬性的連結器,輸入裡,附加依賴項加上:

OpenThreadsd.lib
osgd.lib
osgDBd.lib
osgFXd.lib
osgGAd.lib
osgManipulatord.lib
osgParticled.lib
osgShadowd.lib
osgSimd.lib
osgTerraind.lib
osgTextd.lib
osgUtild.lib
osgViewerd.lib

f)執行,效果如下圖:

————————————————————————————————

可能出現的問題:

1.出現無法解析的外部檔案,說明庫沒連線上,但是其實是連結上了的,這時只需要改動  解決方案配置與解決方案平臺,Debug和release與X64和WIN32互相搭配試一試。

,沒有就新建一個

2.出現計算機中丟失zlibd1d.dll,將*:\OSG\3rdParty_x86_x64\x86\bin或者X64下的zlibd1.dll、zlib1.dll和zlibd.pdb檔案拷到D:/OSG/OpenSceneGraph-3.0.1\bin\bin目錄下,這樣應該就可以運行了。

3.根據不同的電腦選擇。可能出現X86與X64之間的問題,原因在於平臺沒有選對,最好的方式是重新建立一個新專案,然後程式碼進行復制後,跟第一個問題一樣,選擇對應的搭配嘗試。