1. 程式人生 > >pcl1.8.0+QT5.7.0+vs2013 win7 x64環境配置以及第一個小程式實現

pcl1.8.0+QT5.7.0+vs2013 win7 x64環境配置以及第一個小程式實現

幾經波折終於配置成功,現在總結下網路上的較簡潔的方法分享給大家(第一次寫博,謝大家支援)

主要參考部落格:

http://blog.csdn.net/u012750702/article/details/53046210 

http://blog.csdn.net/wokaowokaowokao12345/article/details/51314439

感謝作者~

前言

如果你也選擇和我一樣版本的pcl以及vs,則無需用到cmake(文中會提供下載連結)

同時建議你也和我一樣的安裝路徑,方便很多~

step1  下載檔案

1.pcl1.8.0  其中exe和pdb以及屬性表都需下載 點選開啟連結

2.QT5.7.0 官網下載即可

3.QVTKWidgetPlugin點選開啟連結

4.qt-vs-addin-1.2.5

step2  安裝QT

QT:D:\Qt\

Qt5VSAddin:D:\Qt5VSAddin\

開啟vs會發現工具欄多了QT5,選擇QT5->qt options->add,path選擇安裝路徑D:\Qt\Qt5.7.0\5.7\msvc2013_64


將下載好的QVTKWidgetPlugin和QVTKWidgetPlugin.dll拷貝在D:\Qt\Qt5.7.0\5.7\msvc2013_64\plugins\designer下

ps:十分有必要提到的一點是,這是在很久前我就用cmake生成的,vtk7.0版本,拷貝過來是可以用的


step3  vs新建工程



雙擊pclvisualizer.ui檔案,左側多出QVTKWidget,簡直amazing。就可以拖進來用啦

step4  pcl安裝及配置

PCL:安裝的時候注意選上“Add PCL to the system PATH for all users”,這樣安裝程式會自動在系統環境變數中新增"PCL_ROOT"項,如圖


我的安裝路徑是D:\PCL 1.8.0\

在安裝過程中會彈出openni2的安裝路徑,可以隨意選取,但建議安裝在D:\PCL 1.8.0\3rdParty\OpenNI2,下圖在環境變數中自動生成



path中新增

;%PCL_ROOT%\bin

;%PCL_ROOT%\3rdParty\Qhull\bin

;%PCL_ROOT%\3rdParty\FLANN\bin

;%PCL_ROOT%\3rdParty\VTK\bin

;%PCL_ROOT%\3rdParty\OpenNI2\Tools

下載好的PCL-1.8.0-AllInOne-msvc2013-win64-pdb,pdb檔案拷貝到PCL ROOT下的bin資料夾中,下圖是拷貝後的樣子


下載好的屬性表我為了方便放在D:\PCL 1.8.0\中


依然是剛才的新建的專案

     注意vs2013中Configuration Manager(配置管理器)預設Active solution plantform(活動平臺)是Win32,如果安裝的是x64的PCL需要將其改成x64,否則編譯的時候會出現奇怪的問題。

Solution Explorer(解決方案管理器)中右鍵專案->Properties(屬性)-> Configuration Properties(配置管理器)->C/C++->Preprocessor(前處理器)->Preprocessor Definitions(預處理定義) 中新增如下兩項:

_SCL_SECURE_NO_WARNINGS 

_CRT_SECURE_NO_WARNINGS


Property Manager(屬性管理器)中


右鍵每個以Debug或Release開頭的資料夾,Add Existing Property Sheet,選擇下載下來的屬性表文件(PCLDebug.props或PCLRelease.props),debug就選debug,release就選release

就這樣啦

示例小程式(其實是GitHub的啦)

當然你可以選擇cmake編譯,但我的方法是建立一個Qt工程,將下面幾個檔案替換。注意檢查一下cpp和h中標頭檔案的引用


注意是release


跑出來的結果


問題

1.雖然不影響結果,但提示很多錯。我目前還不清楚原因,難道和cmake編譯有關?


2.no override found for ‘vtkRenderWindow’錯誤解決方法

解決方法:在第一次使用vtk的標頭檔案最前新增下面程式碼。

#include <vtkAutoInit.h> 
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);