- ベストアンサー
海外PC対応のプログラミングで起動できない問題
- 海外PC対応のプログラミングでアプリケーションが起動できない問題が発生しました。ロケールの設定や環境依存の要素を考慮しても同じ状況です。何が問題なのでしょうか?
- 質問者が渡した簡単なプログラムは日本語環境では正常に動作していますが、カナダの方に渡した際にアプリケーションが起動できないという問題が発生しました。ロケールの設定や環境依存の要素を考慮しても同じ結果です。どのように対処すべきでしょうか?
- 海外PC対応のプログラミングでアプリケーションの起動ができない問題が生じています。基本的なプログラムであり、日本語環境では問題なく動作していますが、カナダの方に渡した際に問題が発生しました。起動できない原因は何なのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> ということは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の再配布は禁止されていますので、実質的には無理です。
その他の回答 (2)
- jacta
- ベストアンサー率26% (845/3158)
> デバッグビルドしたものを渡してしまいました。(ほぼデフォルトの設定です) それは論外です。マニュアルを読み直すことをお勧めします。 > 後スタティクリンクとかランタイムライブラリのインストールとはどういうことでしょう? ランタイムライブラリをダイナミックリンクにする場合(/MDオプションの場合)は、msvcr90.dllをいっしょにインストールする必要があります。そうでないなら、スタティックリンクにする(/MTオプションを付ける)必要があります。
お礼
ということは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)でコンパイルしたものでした。
- jacta
- ベストアンサー率26% (845/3158)
ランタイムライブラリをインストールするようにしましたか? あるいはスタティックリンクにしましたか? まさかデバッグ版を渡していませんよね。
お礼
デバッグビルドしたものを渡してしまいました。(ほぼデフォルトの設定です) これは渡す際はリリースビルドにすべきだったということでしょうか? 後スタティクリンクとかランタイムライブラリのインストールとはどういうことでしょう? 日本語版も入れているので日本語版を想定して話を進めて頂いても構いませんのでよろしくお願いします。
お礼
なるほど。 実質他の方に作ったものを渡すにはMT系しかなさそうですね。 何度もご親切にありがとうございました。