LoginSignup
1

More than 3 years have passed since last update.

openFrameworks 0.10.1 / Windowsで配布しやすいアプリケーションを作成する

Posted at

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無しに単体で起動できるようにするには

にある通り、プロジェクトのプロパティにて、

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?

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1