MSVCRの古いバージョンを使用しますか?
-
01-10-2019 - |
質問
私は2008年VSを持っていますが、MSVCR90.dllを含める必要なくWindows 98でアプリケーションを動作させたいです。Win98にはMSVCR60が付属しているので、MSVCにこれを行うように指示するにはどうすればよいですか? Visual Studio 6を追い詰める唯一のオプションですか?
ありがとう
*また、MSVCRの静的リンクを避けたいです
解決
Visual Studioに、ランタイムライブラリの以前のバージョンを使用するように指示することはできません。古いライブラリとコンパイルすることができたとしても、コンパイラが図書館にあると予想される機能への呼び出しを挿入するため、アプリケーション自体は正しく実行されませんが、そうではないかもしれません。
また、MSVCRの静的リンクを避けたいと思います
なんで?これは、この問題に対する完全に有効な解決策のようです。確かに、コードサイズで約100kbを支払いますが、Visual Studio 6のバギーと不適合のコンパイラを使用することを余儀なくされることには価値があります。
また、正しいDLLを含み、標準ライブラリの静的リンクを必要としないMSVC ++再配布可能なものを含めることもできます。
他のヒント
Windows 98をターゲットにしたい場合、オプションは次のとおりです。
- まず、Visual Studio2005の最大バージョン。2008以降は、EXEヘッダーで5.0の最小OS Verをスタンプします-Windows 98は、2008年VSによって生成されたバイナリを単純にロードしません。
CRT分布について:
- アプリで新しいランタイムを配布します。 Static Linkingが必要よりもずっと大きくなっているため、アプリに多くのDLLがある場合は、このアプローチを好みます。さらに、DLLからC ++を使用することには多くの制限があります。これは、プロセスのすべてのモジュール間で少なくともC-Runtimeの実装を共有する場合に緩和されます。
例外のようなC ++機能の「重い」ユーザーではない場合、CRTにまったくリンクしないことで逃げることができるかもしれません。それ以外の場合は、次のとおりです。
- Mingwのような非MSコンパイラを使用します。 MingWは最新のGCCを使用するため、C99およびC ++ 98、C ++ 03、TR1などを取得し、MSVCRT.DLLを使用します。 Code :: Blocsは、視覚的なSutdioを使用したことがなく、頭にあまりにも多くの打撃を受けた場合、「OK」IDEです。
- Windows DDKをダウンロードします。コマンドラインからビルドし、Makeファイルで汚れる必要がありますが、その無料で、DDKはVS2005コンパイラとリンカーを使用しますが、MSVCR80.dllではなくMSVCRT.DLLに対してリンクするように特別にセットアップします。デバイスドライバーがそこにない可能性のあるランタイムに対してリンクするためにデバイスドライバーが必要とすることはあまりにも危険であると考えられていました。
- 最終的なフォールバックオプションとしてのビジュアルスタジオ6。 C ++ 98に対する恐ろしい恐ろしいサポート。少なくともあなたはきれいなIDEを得るので、コンピューターが起動してから8回速度/容量で理論的に2倍になったので、それは非常に速くなるはずです。
低オーバーヘッドマイクロソフトビジュアルスタジオCランタイム 既にWindowsで配布されている利用可能なDLLを最大限に活用する静的にリンク可能なCランタイムです。