VS2005で作成したexeについて

[戻る]
むっさん 2006/05/09(火) 02:55:18
VS2005 StandardEdition
WindowsXP
実行環境:Windows98

むっさんと申します。
VisualStudio2005について質問させてください。

いままで VC++6.0で作成していたプログラムを
VS2005のVC++に開発環境を移行しました。

ところが、いままで Win98で動作していたプログラムが
「必要な DLL ファイル MSVCR80.DLL が見つかりませんでした。」
という警告が出て、プログラムが開始できなくなりました。

とりあえず DLL を探してコピーしたら動くようになりましたが
なぜ exe だけで動かなくなってしまったんでしょうか。
C++/CLI とかいうのが関係しているんでしょうか?

どなたかご教授下さい。
よろしくお願いいたします。

シャノン 2006/05/09(火) 05:51:05
> C++/CLI とかいうのが関係しているんでしょうか?

していません。

VC++ 6.0 の、ランタイムライブラリの設定はどうなっていましたか?
そこが「マルチスレッド(DLL)」とかになっていたなら、Win98 でも、MSVCRT42.DLL 
とかいう DLL が必要だったはずです。Win98 環境にはそれが入っていたのでしょう。
VC++ 2005 でリビルドしたことによって、その DLL の新しいバージョンである 
MSVCR80.DLL が必要になったというわけです。

VC++ 6.0 で、ランタイムライブラリに(DLL)とつかないものを使っていた場合、VC++ 
6.0 版の exe は、動作に特に DLL を必要としないものでした。
が、VC++ 2005 では、ランタイムライブラリはデフォルトで外部 DLL 版を使うようにな
っています。
VC++ 2005 でも exe 単体で動作させたい場合は、プロジェクトの設定を変更することで
可能になります。
プロジェクトのプロパティの「構成プロパティ」→「C/C++」→「コード生成」にある
「ランタイムライブラリ」を、名前に「DLL」がつかないものにしてください。

PATIO 2006/05/09(火) 12:31:50
シャノンさんが書かれている事に補足しますが、

スタティックリンクライブラリとダイナミックリンクライブラリの違いを
調べて自分が作っているプログラムがどちらを使っているのかを認識して
プログラミングを行うようにした方がいいです。
これをきちんと踏まえていないと共通部分をライブラリ化するときに
どちらを選択すべきかとか判断が付かないでしょう。
また、アプリケーションの構成ファイルを理解しておかないと
インストールパッケージも作れませんよね。
この辺は知識としてきちんと持っておいたほうが良いと思いますよ。

古いスレッドには追加発言できません。