Point Cloud Libraryのインストールと設定
『KINECT for Windows SDKプログラミングKinect for Windows v2センサー対応版』
の318ページ、7.1.2に書かれている内容を試してみる。
Windows10で。
空のPoint Cloud Viewerを表示するという内容。
数か月前に、ネット情報をもとに、KinectのデータをPoint Cloud Library(PCL)のビューワーで表示するプログラムを動かしたことはあるけど、おさらいとして試してみる。
PCL All in One のインストール
Building Point Cloud Library with Visual Studio 2012/2013/2015 | Summary?Blog
PCL-1.7.2-AllInOne-msvc2013-win64.exe
をダウンロードして実行。
Add PCL to the system PATH for all users
を選んでみた。
インストールフォルダ:
C:\Program Files\PCL 1.7.2
Warning! PATH too long installer unable to modify PATH!
と表示された。
環境変数Pathを消して、インストーラーを実行したら、
C:\Program Files\PCL 1.7.2\bin
というパスが環境変数Pathに追加されていた。
手動で追加したら、普通に追加できた。
なんで、消さないと警告メッセージが出るのかは不明。
とりあえず、
C:\Program Files\PCL 1.7.2
の下にファイルは展開された。
後に出てくるエラーを解消するためには、
C:\Program Files\PCL 1.7.2\3rdParty\VTK\bin
も環境変数Pathに追加する。
PCL.props
PCL.props
もunanancyowen.comからダウンロード。
Visual Studioでサンプルプロジェクト
プロジェクトの新規作成で、
Visual C++ > Win32 > Win32 Console Application
を作成。
名前は、
Console_pcl_sample1
にした。
作成時の設定はそのまま。
プロジェクト設定
VIEW > Other Windows > Property Manager
で、Property Managerを開く。
Add Existing Property Sheet
で、
PCL.props
を追加。
Property ManagerのPCLを右クリック、Propertiesをクリック。
Common Properties > User Macros > Add Macro
PCL_ROOT
C:\Program Files\PCL 1.7.2
ソースコードの入力
本に載っているソースコードを入力。
エラーその1
ビルドしたら以下のエラーが出た。
Error 4 error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source? c:\Users\xxxxx\documents\visual studio 2013\Projects\Console_pcl_sample1\Console_pcl_sample1\Console_pcl_sample1.cpp 40 1 Console_pcl_sample1
ソースの最初の方に
#include "stdafx.h"
を書いたら直った。
ちなみに、
#include <stdafx.h>
だとダメだった。
エラーその2
Warning 1 warning C4603: 'NOMINMAX' : macro is not defined or definition is different after precompiled header use c:\Users\xxxxxx\documents\visual studio 2013\Projects\Console_pcl_sample1\Console_pcl_sample1\Console_pcl_sample1.cpp 13 1 Console_pcl_sample1 Warning 2 warning C4003: not enough actual parameters for macro 'max' C:\Program Files\PCL 1.7.2\include\pcl-1.7\pcl\correspondence.h 75 1 Console_pcl_sample1 Error 3 error C2589: '(' : illegal token on right side of '::' C:\Program Files\PCL 1.7.2\include\pcl-1.7\pcl\correspondence.h 75 1 Console_pcl_sample1 Error 4 error C2143: syntax error : missing ')' before '::' C:\Program Files\PCL 1.7.2\include\pcl-1.7\pcl\correspondence.h 75 1 Console_pcl_sample1 Error 5 error C2612: trailing '::' illegal in base/member initializer list C:\Program Files\PCL 1.7.2\include\pcl-1.7\pcl\correspondence.h 75 1 Console_pcl_sample1 Error 6 error C1903: unable to recover from previous error(s); stopping compilation C:\Program Files\PCL 1.7.2\include\pcl-1.7\pcl\pcl_macros.h 66 1 Console_pcl_sample1
#include "stdafx.h"
より上に
#define NOMINMAX
があるとこのエラーがでるようだ。
順序を変えたら、、別のエラーになった。
エラーその3
Error 1 error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ) C:\Users\xxxxx\Documents\Visual Studio 2013\Projects\Console_pcl_sample1\Console_pcl_sample1\Console_pcl_sample1.obj Console_pcl_sample1
32bitと64bitの問題みたい。
Active solution platform:
ダイアログで、
Type or select the new platform:
x64
で解決。ビルド成功した。
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
エラーその4
実行したら、エラーのダイアログがでた。
コンピューターに pcl_visualization_release.dll がないため、プログラムを開始できません。 この問題を解決するには、プログラムを再インストールしてみてください。
C:\Program Files\PCL 1.7.2\bin;C:\Program Files\PCL 1.7.2\3rdParty\VTK\bin
を環境変数Pathに追加したら動いた。
真っ黒な画面が表示されるだけ。