見出し画像

openFrameworksのwin版配布用ビルドで詰まった例のメモ

そもそもの目的

visual studio(以下:vs)で生成したexeを動かすときは、吐き出されるexe以外にもdllなどが必要になる。で、それ関係でvsをインストールしたパソコンでないとexeはは動いてくれないらしい。
自身以外のPCでもexeが動いてほしいのでその方法を調べてどうにか解決できた。忘れそうなので自分用にメモ。
ちなoFのバージョンは of_v0.10.1_vs2017_release
visual studio 2017を使用したお話。

ビルド設定とoFのライブラリフォルダ内をいじればできるらしいが

すばらしい先駆者様が手法を紹介してくれていました。環境もモダンで自身のものに近くて助かる。↓
https://qiita.com/aketa/items/42e0476e69c5ca1eefa6
https://qiita.com/nobikko/items/370378b303e129706fd6

や、動かんが

上記リンクで書いてある通りにしても動かない。
原因を突き詰めるために比較実験したところ、アドオン(oF用の簡易的なライブラリのようなもの)の一つであるofxGUIを使用した場合に不具合があることがわかった。
ofxGUIはc++ライブラリのpugixmlを使用していて、それが原因ぽかった。
上記リンクにある通り、スタティックリンクでビルドするためには、アプリのプロジェクトとライブラリのビルド設定のランタイムライブラリを/MTにそろえる必要があった。
pugixmlはコンパイルの際に/MT設定用でビルドするか、/MD設定用でビルドするかどうかを選らんでlibを吐き出すっぽかった。oFにインストールされていたpugixml.libは/MD設定用だったのでエラーが起きたというわけだったっぽい。

そして解決へ

oF内のものと同バージョンのpugixml(https://pugixml.org/)を/MT設定用でビルドして、配布用ビルドのときだけライブラリフォルダ内を入れ替えたら、とりあえず解決。
フォルダの場所は of_v0.10.1_vs2017_release/libs/pugixml/lib/vs/x64/
ライブラリの使用法としてはいびつになっちゃうので、配布用ビルド版oF v0.11.0フォルダをもう一個作ろうかなあ。頭悪いけど考えるのめんどくせえやあ。stack overflowにそういう話題あったけど解決してないしなあ
https://stackoverflow.com/questions/48522201/make-libraries-compatible-with-md-and-mt-options


なにはともあれ、libだのdllだの全然気にしたことなかったが(どうして...)、問題自体は解決できてよかったと思う。正直だいぶん時間喰っちゃってむかいついたが、ライブラリとかそういうのわかっといたほうがいいよな...本当は...

この記事が気に入ったらサポートをしてみませんか?