先日リリースされたPCL1.7.2をどうにかVisual Studio 2013上でビルドできました。
PCLのビルドは過去に結構痛い目見たので、おそるおそる。。。
尚インストール方法の詳細はこのサイトが参考になります。
http://unanancyowen.com/?p=712
https://gist.github.com/UnaNancyOwen/59319050d53c137ca8f3
インストールは例のごとく大量の依存3rd Partyライブラリをインストールします。
僕が今回インストールしたのは以下のバージョン
- Boost 1.55.0
- Eigen 3.2.1
- FLANN 1.8.4
- QHULL 2012.1
- VTK 5.10.1
次にCMakeを使用してVS2013用のプロジェクトをGenerateしますが、その時以下の2点にはまったので、メモ
- "BUILD_OPENNI"と"WITH_OPENNI"のチェックを外す。
- "QHULL_LIBRARY"の指定先をqhull.libではなくqhullstatic.libに
- "QHULL_LIBRARY_DEBUG"の指定先をqhull-gd.libではなくqhullstatic-gd.libに
1点目のチェックをつけてしまうと、「Visual Studio 2010以降ではビルドできねーよ」怒られて、その結果pcl_io.libとそれに依存するライブラリが全部ビルドに失敗します。
Error 1 error C1189: #error : Xiron Platform Abstraction Layer - Win32 - Microsoft Visual Studio versions above 2010 (10.0) are not supported! c:\program files\openni\include\XnPlatform.h 58 1 pcl_io
"BUILD_OPENNI2"と"WITH_OPENNI2"はチェックを入れても問題なくビルドできました。
2点目、3点目のようにstaticライブラリではなくdynamicライブラリ側を指定してしまうと、以下のエラーが出ます。
エラー 1 error LNK2001: 外部シンボル "_qh_qh" は未解決です。 C:\pcl-1.7.2\build\surface\concave_hull.obj pcl_surface
以上
(2014/09/17 OpenNIによるエラーメッセージを追記しました。)
(2014/09/28 追記)
上記環境でPCLVisualizerを使用する(PCLVisualizerをnewした時点で)と、Debugモードではうまくいくのですが、Releaseモードではアクセス違反を起こして立ち上がりませんでした。
そこで、VTKを5.10.1から6.1.0にすることで解決しました。
以下を見ると同じような問題に直面してる人が多そう。。。(これはPCL1.7.0+VS2012ですが)
http://www.pcl-users.org/PCLVisualizer-VS2012-PCL1-7-0-Release-Mode-Problem-td4028975.html