Predator's Vision

画像処理、3D点群処理、DeepLearning等の備忘録

VS2013 で FLANN 1.8.4 をビルド

VS2013 での FLANN 1.8.4 のビルドのメモ。

あるヘッダファイルを修正しないとうまくビルドできなかった。

環境

エラー内容

error C2228: '.serialize' : 左側がクラス、構造体、共用体ではありません。

修正箇所

  • 上記のサイトを参考に、serialization.h内の92行目あたりに3行追加
// declare serializers for simple types
BASIC_TYPE_SERIALIZER(char);
BASIC_TYPE_SERIALIZER(unsigned char);
BASIC_TYPE_SERIALIZER(short);
BASIC_TYPE_SERIALIZER(unsigned short);
BASIC_TYPE_SERIALIZER(int);
BASIC_TYPE_SERIALIZER(unsigned int);
BASIC_TYPE_SERIALIZER(long);
BASIC_TYPE_SERIALIZER(unsigned long);
BASIC_TYPE_SERIALIZER(float);
BASIC_TYPE_SERIALIZER(double);
BASIC_TYPE_SERIALIZER(bool);

#ifdef _MSC_VER   // 追加
BASIC_TYPE_SERIALIZER(unsigned __int64);   // 追加
#endif   // 追加

最終的なビルド手順

  1. FLANNのソースコードをダウンロード・解凍。今回はC:\FLANN下に解凍した。
  2. src/cpp/flann/util/serialization.hを上述の通り修正
  3. cmake して Visual Studio で開けるソリューションファイルを作成
    • スタートメニューからCMake (cmake-gui) を起動
    • 必要事項を入力して "Configure" を押す
      • "Where is the source code:" に "C:\FLANN"
      • "Where to build the binaries:" に "C:\FLANN\build" (どこでもいい)
    • 何か設定が必要であればする
      • 今回は特に何もしない
    • "Generate" を押す
  4. C:\FLANN\build に作成された flann.sln を管理者権限で開く
    • 下記のINSTALLで、ビルドしたファイルをProgram Files下にコピーするのに管理者権限が必要
      • INSTALLしなくていいなら flann.sln は普通に開いてよい
    • 先に Visual Studio 2013 を管理者権限で開いてから flann.sln を開くとよい
  5. メニュー「ビルド」→「バッチビルド」をクリック
  6. 次の4つにチェックを入れて「ビルド」を押す
    • ALL_BUILD (Debug)
    • ALL_BUILD (Release)
    • INSTALL (Debug)
    • INSTALL (Release)