いちばんやさしいゲームの作り方

文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ

Visual C++ 2008 Express Edition で配布可能な EXE ファイルを作るためには、ランタイムライブラリを静的リンクします。

…と、これでずっと解決してきたつもりなんですが、最近そうでもないのでしょうか?

Visual C++ インストール直後の設定でビルドした EXE ファイルは、 Visual C++ のランタイムがないと動作しなくなっています(プログラムサイズを小さくするため)。ところがゲームのように配布前提のプログラムの場合、これだと困りますので、ランタイム不要で動かす設定にして配布するのが常です。

やり方はプロジェクトを開いて、「プロジェクト(P)」→「プロパティ(P)」→「構成プロパティ」→「C/C++」→「コード生成」とたどり、「ランタイムライブラリ」を DLL 以外に設定します(初期状態では DLL に設定されています)。

実は Visual C++ 2008 を入れてから試してないのですが、これだと動かないということを書いているサイトがたくさんありました。もしかしたら仕様が変わったのでしょうか。

メルマガで奨励してる責任もありますし、仕事が始まったら他の人のパソコンで試してみようと思います(でも、 PE 情報を見てみる限り、 Windows に標準で入っていない DLL は読みに行っていない様に見えます…)。

Comments

yomogi
2009/05/06 20:08:46

一応自分も配布?というか、テストとして他人にプログラムを押し付けたことがあるのですが
マルチスレッド DLL (/MD)
で渡したところ、起動できないと文句を言われました。
マルチスレッド (/MT)
でないと動きませんでした。

VC++2008でも同じだと思っていたのですが…
どうなのでしょうか?

Byerkut
2009/05/07 01:41:34

> yomogi さん

そうなんですよね。
ちなみにあの設定ちょっとわかりづらいですよね。
ランタイムライブラリの使用「する・しない」とかの方がわかりやすいです。
情報ありがとうございました(^^

じぇつ
2009/05/07 11:08:45

visual studio 2008 sp1 の再頒布可能ランタイムパッケージがあります。こちらをユーザがインストールすることで、dll版ランタイムの実行ファイルでも実行可能になります。

http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2

Byerkut
2009/05/10 11:14:07

>じぇつさん

情報をいただきましてありがとうございます(^^
そうか、ランタイムが配布されているんですね。
最悪、サイドバイサイドの設定が必要かと思いましたが、
ランタイムを入れていただければ無用の心配となりそうです。

saru
2009/07/19 12:45:55

デバッグバージョンでは、ランタイムを入れても
無理でしたよ。

Byerkut
2009/07/24 23:06:19

> saru さん

情報いただきましてありがとうございます m(_ _)m
デバッグ版を配布する予定がありませんでしたので確認しておりませんでした。
ちょっと同僚のマシンで実行してみたいと思います。
なんでしょう、デバッグ向けの特別な関数へリンクしているのでしょうか…

Contributions




Trackback URL

メルマガ登録・解除
 
挫折不可能!初級ゲームプログラミング完全マニュアル
RSS track feedいちばんやさしいゲームの作り方 カウンター
ブログSEO対策:track word あわせて読みたい SEO STATUS