QGLViewer+VS2013+QT5.5 X64排坑文檔

丁叔叔就是喜歡在代碼前線摸爬滾打,排坑的過程相當痛苦,成果出來的時候有趣而充滿樂趣。有一種:啊,門打開了,可算可以鬆口氣的感覺。

不這樣用成就感麻痹自己的話,哪天真的會打穿電腦的吧……

 本文代碼以及教程已經打包好了,傳送門如下:

http://download.csdn.net/download/qq_30547073/10184924

如果你沒有積分,那我們還有免費的網盤鏈接:

鏈接:https://pan.baidu.com/s/1i5MRSbF 密碼:ku8f

那麼嘿嘿,轉載的話,也請著明出處吧,雖然我知道這麼垃圾的文章不會有人轉載的嘿嘿

http://blog.csdn.net/qq_30547073/article/details/78954592

實在不知道怎麼弄的孩紙們還可以加我QQ共同探討: 498771026

下面是QGLViewer的排坑筆記。

爲毛要搞這個東西呢?因爲CGAL要用。CGAL需要用兩個第三方庫,一個是boost,另一個就是QGLViewer。結果一天下來,CGAL半點沒學,倒是讓我把這個寶貝搗鼓出來了。

後來發現QGLViewer這個東西可以進行顯示、交互。它集成和封裝了opengl的函數,很少幾句代碼就可以製造一個完美的可視化工具。筆者一開始看到這個的時候還是很高興的,因爲筆者是一個菜雞,菜雞是不可能自己寫出opengl的相機的,只能求助於第三方庫,而且筆者用的是QT。這類的相機官方例子也只給出了很少量的介紹。所以筆者決定一定要看看這個庫究竟如何使用。後來發現,這個庫封裝的是opengl1,而不是基於頂點緩存和索引緩存的opengl es2,所以它的顯示速度還是有待提高。


   本人使用QTCreator作爲編譯工具。版本爲X64、Win8、VS13、QT5.5。請諸位小夥伴們千萬不要搞錯。不同版本的QT要對應好各自的編譯器。

QT5.5的配置不多說了,網上一大堆。裝好後再裝Vsadd-in。這些都是必須的。

然後從官網上下載QGLViewer,傳送門如下:

http://libqglviewer.com/installWindows.html

然後解壓:一開始應該只有這幾個東西:



我們直接打開QGLViewer下的pro進行編譯,我們先不管其他的。


    上面這個配置一定要選對哦,不然的話後續是連接不起來的。筆者的是VS3013的64位,沒啥毛病。我們開始編譯,點擊左下角的大錘子開始。不出問題的話就會報下面這些錯誤了:


恩,可以說不出所料,自然不會這麼簡單22333333.

 

還好筆者憑着超級豐富的經驗,當下就判斷出來,這個絕對是opengl庫沒配好。(這他媽的還用你說)哈~哈哈哈~哈哈哈哈哈哈。。。。。

筆者在pro中添加了如下救命代碼,這個代碼曾經解決了筆者的opengl無法使用的問題:

win32-g++:!contains(QMAKE_HOST.arch,x86_64){

    LIBS+="C:/ProgramFiles(x86)/MicrosoftSDKs/Windows/v7.1A/Lib/OpenGL32.lib"

}else{

    LIBS+="C:/ProgramFiles(x86)/MicrosoftSDKs/Windows/v7.1A/Lib/x64/OpenGL32.lib"

}

添加完了之後就長下面這個樣子:


添加完之後還沒完,我們要重新編譯,但是這個時候如果編譯個錘子的話,仍然會報相同的錯誤。其實是QT自己的bug,因爲他不會自動刷新配置。這個時候我們只要將生成的文件刪除然後再編譯個錘子就行了。

圖解見下面:


上面的圖就是你需要刪除的文件,位置就應該在上級目錄,名字的話,每個人都不一樣。

然後我們再重新編譯。這回錯誤少了很多,然而還是沒有過去。

筆者抑制住了打穿電腦的衝動,並開始冷靜地分析。。。。2233333

這個錯誤仍然是opengl,這幾個函數都是glu打頭的,那麼一定是少了glu庫。而我們剛纔添加的庫是opengl32,那麼在相應目錄下也應該找到glu32纔對!筆者立刻打開相應文件夾來看,果然,兩個都找到了。


好,那接下來我們把這個庫也添加進來唄:

好那麼刪除工程,重新編譯!yes!過了。那麼查看一下生成的文件:


恩,不錯,完好無損。這個QGLViewer編譯成功過後,筆者信心大增。

好嘞,別忘了,把Release和Debug中生成的這幾個文件複製到C:\windows\System32

這一步複製非常重要,因爲下面編譯的時候會在這個路徑下尋找這幾個庫。筆者在這中間也是折騰了好久。

下面編譯這個玩意:designerPlugin,這個東西說白了吧,做成了一個控件,可以在VS編譯器下進行拖放,也就是說可以跟其它Widget一樣可以在窗體設計器中進行設計。真tm的人性化啊。好了我們不爆粗口。


仔細一看,還是opengl出了問題,好嘞,繼續剛纔的做法,添加opengl的兩個lib即可,然後刪除生成的文件,重新編譯。

誒,過了。非常開心。好嘞,我們先不管這個designer,因爲這個是可選的,其實我們有了QGLViewer之後已經可以運行例子了。先來跑個example試試。

首先打開一個animation,編譯看看,誒,別急,打開之後發現左下角除了錘子都是灰色的,哈?這個什麼鬼?點一下錘子看看,誒,編譯成功了,然而不能運行。。。


這個大概就是解析出了問題。一般來講這個問題,只要我們重新新建一個工程然後拷貝相應的h文件和Cpp文件過去就行了。然後作者抱着嘗試的心態弄了一下,新建了一個工程,向新建工程的pro中添加了一些代碼如下:


其實在這之前比這還做了一件事就是把lib和dll全部拷貝出來放到一個單獨的文件夾中,當然,h文件也拷貝出來了。如下圖所示:


恩,就醬。或者你不想這樣做的話也沒有關係,只要包含相應的lib所在目錄就行了。當然了,由於用到了opengl,你必須在pro中添加剛纔的那兩行救命代碼,還有一些opengl必備的組件才行:


那麼接下來我們編譯然後運行程序:


    哎呦呦,出來了。有點小激動。

 

    其實有的時候自己也不知道前方的程序會遇到什麼問題,但是隻要洗了功夫,一定可以得到解決。即便是沒有解決,自己也可以通過這些事情鍛鍊解決問題的辦法,這纔是最重要的。

    本次編譯過程花費攻共計5個半小時。再加上文檔編寫,一共6個半小時。圓滿成功。當然,前方的路還很長,同志仍需努力。



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