4

Windows ネイティブ アプリケーションを配布するとき、まだ vcredist.exe を気にする必要がありますか? これらのいずれかが Win-7 にバンドルされていますか?

そうでない場合、これらが Windows Update などを介して人々に出荷されない技術的な理由はありますか? (わかりました、それは議論の余地があるように聞こえるかもしれませんが、これらのライブラリがWindowsマシンにデフォルトでインストール/更新されない理由を本当に疑問に思っています)

4

4 に答える 4

2

それはあなたがどのように/何にリンクされているかによると思います。もちろん、kernel32.dll などに直接リンクしている場合は問題ありませんが (つまり、C ランタイム ライブラリが埋め込まれています)、Microsoft はその配布方法を推奨していません。

msvcr80/90/whatever 2010 is.dll を介してリンクしている場合、XP では標準として提供されないため、そのランタイム ライブラリを配布する必要がある場合があります。msvcr80 は Vista に付属していますが、msvcr90 はないと思いますが、Windows の更新によって追加される可能性があります。それでも、そこにあることに頼ることはできないため、万一に備えてコピーを持っておくことをお勧めします。

私の知る限り、msvcrt.dll (mingw がリンクしている) は xp を超えるすべてのものと共に配布されています。vc6 はこれにリンクしていますか? 当時、私はVC++を持っていませんでした。

Windows SDKの実行可能ファイルを見てdepends.exe、Windows API 以外の部分に何が含まれているかを調べてください。

于 2010-04-14T20:55:50.707 に答える
1

そうです。そうしないと、プログラムを実行しようとすると、プログラムが見事にクラッシュします。多くのユーザーは Win7 を実行していません。それでも、インストーラーに含めずにランタイムがインストールされていることを確認する方法はありません。

または、ランタイムの静的ビルドとリンクして、再配布可能な C ランタイムに煩わされる必要をなくすこともできます。

于 2010-04-14T20:52:41.157 に答える
0

GCC でコンパイルするときは、常に XP 以降にある MSVCRT.DLL にリンクします。

于 2010-04-14T20:54:44.070 に答える
0

これは、4 月 14 日 23:29 の Larry Osterman のコメントへの返信です。

あなたは言う:

msvcrt.dll は C ランタイムではありません。Windows の内部コンポーネントであり、サード パーティのアプリケーションで使用することはできません。この DLL を使用する参照が MSDN で見つからないことに注意してください。昔々、サードパーティのアプリケーションがこれを使用していましたが、約 10 年間使用されていませんでした。– ラリー オスターマン 4 月 14 日 23:29

これは、msvcrt.dll へのアクセスに基づく mingw システムの前提全体に反しているように見えました。あなたのコメントにより、mingw の仕組みをよりよく理解することができました。mingw は、1998 年に出荷された msvcrt.dll をまだ使用していることが判明しました。このリンクを参照してください:

http://www.mingw.org/wiki/C99

ありがとうございました、

トッド

于 2010-11-12T16:32:07.797 に答える