takminの書きっぱなし備忘録 @はてなブログ

主にコンピュータビジョンなど技術について、たまに自分自身のことや思いついたことなど

PCL1.7.2をVS2013でビルドした時のTips

先日リリースされた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点にはまったので、メモ

  1. "BUILD_OPENNI"と"WITH_OPENNI"のチェックを外す。
  2. "QHULL_LIBRARY"の指定先をqhull.libではなくqhullstatic.libに
  3. "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