SfMのオープンソースOpenMVGをVisualStudio2015でビルドする方法を紹介します。
・厄介なところ
VS2015だと以下のstdioの互換性問題が発生し、VS2013だとC++11のconstexprに対応していないので、そのままだとVS2015でもVS2013でもビルドできません。
http://stackoverflow.com/questions/30412951/unresolved-external-symbol-imp-fprintf-and-imp-iob-func-sdl2
本記事では、stdio問題への対応を含め、OpenMVGをVS2015でビルドする方法を紹介します。
1. ソースコード入手
以下のページからソースコードを入手します。
それだけだとsrc/dependenciesが空なので、git submodule update -iします。
https://github.com/openMVG/openMVG
2. CMake
警告がたくさん出ますが無視しても大丈夫です。
下手にMOSEKなど必須でないライブラリを使おうとするとバージョン問題でビルドできなかったりするようです。
3. stdio問題対応
samplesとsoftwareの全てのプロジェクトについて以下の対応を行う。
・厄介なところ
VS2015だと以下のstdioの互換性問題が発生し、VS2013だとC++11のconstexprに対応していないので、そのままだとVS2015でもVS2013でもビルドできません。
http://stackoverflow.com/questions/30412951/unresolved-external-symbol-imp-fprintf-and-imp-iob-func-sdl2
本記事では、stdio問題への対応を含め、OpenMVGをVS2015でビルドする方法を紹介します。
1. ソースコード入手
以下のページからソースコードを入手します。
それだけだとsrc/dependenciesが空なので、git submodule update -iします。
https://github.com/openMVG/openMVG
2. CMake
警告がたくさん出ますが無視しても大丈夫です。
下手にMOSEKなど必須でないライブラリを使おうとするとバージョン問題でビルドできなかったりするようです。
3. stdio問題対応
samplesとsoftwareの全てのプロジェクトについて以下の対応を行う。
一.
extern "C" { FILE __iob_func[3] = { *stdin,*stdout,*stderr }; }
と書いたヘッダファイルを用意してインクルードする。
二.
legacy_stdio_definition.libをリンクする。
以上で、OpenMVGをVS2015でビルドできるはずです。
コメント