本人,一個點雲newbie,看了《點雲庫PCL從入門到精通》第五章,qt的相關內容,發現書中說的對新手很不友好。
在解決了好幾天bug之後,寫下這篇newbie教程。
配置環境:
VS2017_x64,VTK8.0.0,QT5.13.0,Qt Creator4.9.1,cmake3.10.2
目標:
實現VS、VTK、QT的聯合使用,並且把書裏的代碼跑通
過程:
1.安裝PCL
- 安裝的時候注意PCL路徑中不要出現空格,默認安裝路徑是有空格的
- 安裝後,記得去電腦上增加PCL的環境變量
添加環境變量PCL_ROOT
C:\Program Files\PCL 1.8.0
在PATH環境變量下添加
C:\Program Files\OpenNI\Bin;
%PCL_ROOT%\bin;
%PCL_ROOT%\3rdParty\FLANN\bin;
%PCL_ROOT%\3rdParty\Qhull\bin;
2.安裝cmake
- 注意版本問題
我安裝的是cmake3.10.2
一開始安裝的是比較新的一個版本,但是那個版本中的VS2017沒有64位的版本,也就是跟我電腦中安裝的VS不兼容,cmake無法運行,所以換了比較舊的版本就可以了。
3.用cmake安裝VTK
- 需要按照書上的注意事項對編譯時的VTK進行勾選
- 我就是在這一步埋下了bug的伏筆
- 如果不想自己編譯VTK的話,就去csdn的資源博客上下載別人編譯好的VTK
我用的是這位博主的資源
https://blog.csdn.net/HB_Programmer/article/details/92836303
雖然配置有些和我不一樣,但是確實能用,解決了我的大bug
(也就是QVtkWidgetPlugin.dll無法識別,找不到頭文件QVtkWidget.h)
4.安裝qt和插件
- 網上沒有找到只安裝qt designer的辦法。只能夠安裝Qt的時候安裝QtCreator
- 把QVTkWidgetPlugin.dll放到QtCreator的plugin/designer中會發現無法讀取。
stackoverflow上說,需要和QtCreator的關於中所提到的配置一樣的電腦編譯的QVTkWidgetPlugin.dll才能被識別。
但是QtCreator的32位和64位是同一個安裝包,安裝下來就是32位,我的vs是64位。在網上沒找到這個配置的dll下載,此題無解。如果大家有這個配置的dll,麻煩發我一份。
5.跑項目
-
遇到的第一個bug就是VS會報錯找不到過程文件ui_pclvisualizer中的頭文件:
報錯原因有三點
1.pcl的安裝位置沒有配置到環境變量中2.是qt4和qt5的頭文件發生了一些比較大的變化,具體的寫法我會上傳到我的csdn資源裏面。
https://download.csdn.net/download/sparkleyn/11463567 -
遇到的第二個報錯就是“找不到頭文件QVtkWidget.h”
具體原因是因爲當初VTK沒編譯好,全網都沒找到解決方案,在這個博客的幫助下解決了,實名感謝(o゜▽゜)o☆
https://blog.csdn.net/HB_Programmer/article/details/92836303 -
遇到的第三個事情是,我在嘗試解決bug的時候在VS中安裝了vs qt tools
如果在VS-tools中下載這個插件,會發現,這個插件下載之後沒法兒用。
是因爲版本太高了。這個時候就要去網上下載低版本,並且取消掉vs-tools裏面的自動更新纔可以用。
6.還沒有解決的問題
QtCreator上還是沒有識別到QVtkWidgetPlugin.dll,我的QtCreator是msvc2017,32bit,希望大家有這個版本的dll發我一份,感激不盡。