of_v0.10.1_vs2017_release
ターゲットRelease/x64でのやりかた
1
- アプリケーションプロジェクトのプロパティ
- openframeworksLibのプロパティ
にて、C/C++
-> コード生成
-> ランタイムライブラリ
を/MT
にする。
2
https://www.dropbox.com/sh/oakofuoccawtvfd/AADD2W7uncOTtrF0K1Hvg7Xja?dl=0
から
libboost_static_libs_for_of_v0.10.1_vs2017_release_libs_boost_lib_vs_x64.zip
をダウンロードし、中身の4ファイルを
of_v0.10.1_vs2017_release\libs\boost\lib\vs\x64
に配置する。
説明
WindowsのopenFrameworksof_v0.10.1_vs2017_release
でアプリケーションをRelease/x64でビルドし、アプリケーションの.exeファイル入りbinフォルダーを配布する際、配布した先でVisual Studioをインストールしてないと、MSVCP140D.dll
がないといわれて実行できません。Visual Studioのランタイムを別途インストールすればよいのですが、インストールしなくても動いてほしい。
のびっこさんの解説、
[Visual C++で作成したEXEを、ランタイムDLL無しに単体で起動できるようにするには]
(https://qiita.com/nobikko/items/370378b303e129706fd6)
にある通り、プロジェクトのプロパティにて、
C/C++
-> コード生成
-> ランタイムライブラリ
を/MT
にする
ことで解決。。
するかと思いましたが、openframeworksLibプロジェクトも同じ設定をする必要があります。
しかしlibboost_filesystem-vc141-mt-s-1_64.dll
がないよ、とリンクエラーが出ます。
スタティックリンク用のboostのdllがof_v0.10.1_vs2017_release
に入ってないことが原因です。
sourceforgeにあるboostをビルドしたバイナリを入手します。
にある、boost_1_64_0-msvc-14.1-64.exe
をダウンロードして、中に入ってる以下の4ファイルを見つけます。
libboost_filesystem-vc141-mt-s-1_64.dll
libboost_filesystem-vc141-mt-sgd-1_64.dll
libboost_system-vc141-mt-s-1_64.dll
libboost_system-vc141-mt-sgd-1_64.dll
上記ファイルをof_v0.10.1_vs2017_release\libs\boost\lib\vs\x64
フォルダに配置すると、リンクエラーが出なくなります。
sourceforgeのファイルはいろいろ入ってて大きいので、必要な上記の4ファイルだけ以下にまとめておきました。
https://www.dropbox.com/sh/oakofuoccawtvfd/AADD2W7uncOTtrF0K1Hvg7Xja?dl=0
なおopenframeworksLibプロジェクトのランタイムライブラリを/MT
にすると、アプリケーションプロジェクトも全部/MT
にしないとリンクできなくなりますので、配布用ビルドの用が済んだら/MD
にもどしとくのがいいかと。
##参考
oF forumの参考スレ Static linking not building needed Boost version in VS 2017?