Windows ネイティブ アプリケーションを配布するとき、まだ vcredist.exe を気にする必要がありますか? これらのいずれかが Win-7 にバンドルされていますか?
そうでない場合、これらが Windows Update などを介して人々に出荷されない技術的な理由はありますか? (わかりました、それは議論の余地があるように聞こえるかもしれませんが、これらのライブラリがWindowsマシンにデフォルトでインストール/更新されない理由を本当に疑問に思っています)
それはあなたがどのように/何にリンクされているかによると思います。もちろん、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 以外の部分に何が含まれているかを調べてください。
そうです。そうしないと、プログラムを実行しようとすると、プログラムが見事にクラッシュします。多くのユーザーは Win7 を実行していません。それでも、インストーラーに含めずにランタイムがインストールされていることを確認する方法はありません。
または、ランタイムの静的ビルドとリンクして、再配布可能な C ランタイムに煩わされる必要をなくすこともできます。
GCC でコンパイルするときは、常に XP 以降にある MSVCRT.DLL にリンクします。
これは、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 をまだ使用していることが判明しました。このリンクを参照してください:
ありがとうございました、
トッド