C/C++/MFCのランタイムの種類を知りたい

解決


ぴょぴょ  2009-02-10 09:59:37  No: 69657

お世話になります。
只今、C/C++/MFCのランタイム・ライブラリの有無チェッカをVCで作ろうとしています。
僕はdllには詳しくないためランタイムの種類が分かりません。
dllのファイル名や場所(システムフォルダで良いのか?)などを
教えて下さい。

また、バージョンの取得方法も一緒に教えて欲しいです。
フリーソフトの『XPの救急箱』と同じようなものと作ろうとしています。
dllの種類がどのくらいあるのか知りたいです。

開発環境:Windows XP Home SP3
動作環境:Windows一般で動けるようにしたいです


ぴょぴょ  2009-02-10 10:02:31  No: 69658

この質問は他にも質問しています。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200902/09020016.txt
http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+200902/09020011.txt
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200902/09020017.txt
いろいろと知っているマルチな方が居りましたら
別の質問もお願いします。


みい  2009-02-10 19:41:31  No: 69659

まずはVCのヘルプのキーワードに「再頒布」を入力してみてください。
VCのバージョンによってDLLは異なります。

> 動作環境:Windows一般で動けるようにしたいです
ライブラリリンクで作ればDLLなくても動きます(基本コントロールのみなら)。


επιστημη  URL  2009-02-10 20:57:11  No: 69660

DLLの有無を知るだけでいいのですか?
それともDLLがLoadできるか否かを知りたいのですか?
後者はPathの設定や実行モジュールの位置に依存します。
# あったところでLoadできなきゃ意味ないしねー


ぴょぴょ  2009-02-11 02:22:52  No: 69661

みいさん、
επιστημηさん
レスありがとうございます。

>ライブラリリンクで作ればDLLなくても動きます(基本コントロールのみなら)。
自作ソフトならこれで良いけど、他の人の作ったソフトを
動かすために dll を確認するツールを作りたい訳です。

>DLLの有無を知るだけでいいのですか?
>それともDLLがLoadできるか否かを知りたいのですか?
出来れば有無だけでなく正しくソフトでロードが可能かどうかも調べたいです。
(バージョンの確認も行いたい)

>後者はPathの設定や実行モジュールの位置に依存します。
確かにソフトによっては dll をシステム・フォルダ以外に置いて
動かすタイプがあり、基本的にシステム・フォルダ内の dll に
限定しようかと思っている。


maru  2009-02-11 02:44:16  No: 69662

「システム・フォルダ」がどこを指しているか知らないが、最近のDLLは
サイド・バイ・サイドになってるから、必要なDLLの特定はアプリ作成者
でないと難しいのでは?
無駄な努力にならないとよいのですが。


ぴょぴょ  2009-02-11 02:54:02  No: 69663

maruさんレスありがとう。

>無駄な努力にならないとよいのですが。
説明書で MFC のランタイムがないと動かないとか書かれていることがある。
この場合、どのフォルダに置くようにとはかかれていないので
必要な dll はシステム・フォルダに置けばよいと解釈している。

ちなみに僕の環境は VC2003.NET を使っているためか、
MFC3.0 はなく MFC4.0 と MFC7.0 が存在するようです。
古い MFC のランタイムはどのように用意すれば良いでしょうか?


maru  2009-02-11 03:31:51  No: 69664

> この場合、どのフォルダに置くようにとはかかれていないので
> 必要な dll はシステム・フォルダに置けばよいと解釈している。
昔はそうでしたが、現在はランタイムをインストールするために再頒布
ファイルがあります。

> 説明書で MFC のランタイムがないと動かないとか書かれていることがある。
今日の感覚では、非常に不親切なプログラムですね。
MFCランタイムが必要ならば、アプリのインストール時に再頒布ファイルも
同時にインストールすべきでしょう。

> 古い MFC のランタイムはどのように用意すれば良いでしょうか?
C:\Program Files\Microsoft Visual Studio .NET 2003\1041\redist.txt
を読んでください。インストール時にvcredist_x86.exeを実行しろと書いて
あります。このファイルはインストール先のどこかに格納されているはずで
す。

ちなみにあなたが考えているツールはDependcy Walkerではないですか?
VC6.0には標準でついてきますが、.Net 2003以降ツールメニューから
見かけなくなりましたね(.Net 2002からかな?)。いまVC2005の
C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin
をみてみたらExe, Dll, HLPはあったけど、メニューには登録されてない。
VC2008にいたってはExeさえない。やっぱり、使用する機会がないという
ことかな。


ぴょぴょ  2009-02-12 06:12:45  No: 69665

maruさんへ。
> C:\Program Files\Microsoft Visual Studio .NET 2003\1041\redist.txt
読んでみました。
たくさんあるようですね。

> ちなみにあなたが考えているツールはDependcy Walkerではないですか?
今はここまで本格的には考えていません。
(興味はありますけどね)

今のところ
msvcrt.dll(VC6)
msvcr70.dll
msvcr71.dll
msvcrt20.dll
msvcrt40.dll
msvcr9.dll(2008)

mfc40.dll
mfc40loc.dll
mfc42.dll
mfc42loc.dll
mfc70.dll
MFC71.dll

などをチェックするように考えている。

バージョンはリソースから取得できることが分かった。
GetFileVersionInfo


ぴょぴょ  2009-02-12 07:45:03  No: 69666

次のソフトを参考に自分なりのチェッカを作ってみます。
http://www.forest.impress.co.jp/article/2006/09/22/runtimedetector.html
http://support.microsoft.com/kb/125476/ja


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加