こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

海外PC対応のプログラミング

DOSベースで作った簡単なプログラムをカナダの方に渡したら
アプリケーションの構成が正しくないので起動できないという旨のメッセージが表示されて起動できなかったと言われました。
試しに渡したのは本当に基本的なプログラムで、日本語環境だと問題なく起動できますし、
環境に依存するDirectXなどは一切使っていません。
もしかしたらロケールの設定が悪かったのかなと思い、
setlocale( LC_ALL, "Japanese" );
したものを渡しても同じでした。

OSはWinXP日本語版、開発環境はVS2008EEの英語版です。何が問題なのだと思われますか?
こういう場合はやはり英語版のWindowsを購入して自分で確認した方が早いのでしょうか・・。

投稿日時 - 2008-07-06 10:34:29

QNo.4155032

暇なときに回答ください

質問者が選んだベストアンサー

> ということはMD系でならReleaseビルドの
> Multi-threaded DLL (/MD)にしてmsvcr90.dllを.exeと同じ場所に置いたものを渡すか、

できればPATHが通った場所にしてください。

> あるいは同じReleaseビルドのMT系のMulti-threaded (/MT)でmsvcr90.dllが.exeに組み込まれたものを渡せば良いと言う意味でしょうか?

正確には、msvcr90.dllそのものが組み込まれるのではなく、libcmt.libに含まれる必要なオブジェクトファイルがリンクされることになります。

> 今確かめてみると確かに私が渡したのはMulti-threaded Debug DLL (/MDd)でコンパイルしたものでした。

この場合、msvcr90d.dllを使えば動かすことは可能です。
ただし、msvcr90d.dllの再配布は禁止されていますので、実質的には無理です。

投稿日時 - 2008-07-06 17:01:56

お礼

なるほど。
実質他の方に作ったものを渡すにはMT系しかなさそうですね。
何度もご親切にありがとうございました。

投稿日時 - 2008-07-06 18:21:59

ANo.3

このQ&Aは役に立ちましたか?

15人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

> デバッグビルドしたものを渡してしまいました。(ほぼデフォルトの設定です)

それは論外です。マニュアルを読み直すことをお勧めします。

> 後スタティクリンクとかランタイムライブラリのインストールとはどういうことでしょう?

ランタイムライブラリをダイナミックリンクにする場合(/MDオプションの場合)は、msvcr90.dllをいっしょにインストールする必要があります。そうでないなら、スタティックリンクにする(/MTオプションを付ける)必要があります。

投稿日時 - 2008-07-06 12:35:01

お礼

ということはMD系でならReleaseビルドの
Multi-threaded DLL (/MD)にしてmsvcr90.dllを.exeと同じ場所に置いたものを渡すか、
あるいは同じReleaseビルドのMT系のMulti-threaded (/MT)でmsvcr90.dllが.exeに組み込まれたものを渡せば良いと言う意味でしょうか?

MTが静的に必要なdllが勝手にexeに組み込まれているものでMDが動的に同梱する必要があるモード、という認識でよろしいでしょうか?

今確かめてみると確かに私が渡したのはMulti-threaded Debug DLL (/MDd)でコンパイルしたものでした。

投稿日時 - 2008-07-06 15:57:33

ANo.1

ランタイムライブラリをインストールするようにしましたか?
あるいはスタティックリンクにしましたか?
まさかデバッグ版を渡していませんよね。

投稿日時 - 2008-07-06 11:37:53

お礼

デバッグビルドしたものを渡してしまいました。(ほぼデフォルトの設定です)
これは渡す際はリリースビルドにすべきだったということでしょうか?
後スタティクリンクとかランタイムライブラリのインストールとはどういうことでしょう?
日本語版も入れているので日本語版を想定して話を進めて頂いても構いませんのでよろしくお願いします。

投稿日時 - 2008-07-06 11:48:04

あなたにオススメの質問