Qt 5.0.2 が提供する MinGW-builds ツールチェーンを使用してプロジェクトをビルドしています。全体としては順調に進んでいますが、問題が発生したようです。ベータ テスターが自分の Windows XP マシンでプログラムを実行すると、プログラムは即座に次のエラーでクラッシュします。
Dependency Walkerを使って調べてみたところ、次の 2 つのことがわかりました。
MinGW の C++ ランタイムがそれにリンクすると、msvcrt.dll が関与します。
驚くべきことに、彼のコンピューター (およびオフィス内の他のいくつかのコンピューター) には msvcrt.dll (Windows C ランタイム ライブラリ) のバージョンが非常に古いため、「安全な」CRT 追加(MinGW の C++ ランタイムが使用しているようです) がすべて欠けています。
Qt が (で) 提供する Visual C++ ランタイムをインストールしQt\Qt5.0.2\vcredist
ても問題は解決しません。Qt が使用するものなどの最新バージョンのランタイムでは、古いファイルを置き換える代わりに、別のファイル (VS11 の msvcp110.dll や msvcr110.dll など) が提供されるためです。 1。
回避策はありますか?MinGW のすべてのバージョンがこのファイルにリンクしているように見えますが、C++11 のサポートが不十分なため、Visual Studio 2010 (Qt 5 が提供する別のオプション) に切り替えないことを本当に望んでいます。最初のアイデアは、インストーラーに古い msvcrt.dll を新しいものに置き換えることですが、
多くのプログラムがランタイムを積極的に使用しているため (想像してみてください)、単純に上書きすることはできません。
厄介なユーザー空間アプリケーションのインストーラーが
C:\Windows\System32
ファイルにアクセスして置き換えを開始するのは、非常に悪いことのように思えます。