質問

MS Visual C++ ランタイム ライブラリには何が含まれていますか?つまり、グーグルで検索すると、「ヘルプ、アプリ xxxx で MS Visual C++ ランタイム ライブラリ エラーが表示される」というようなことがいつも見つかりましたが、説明はありませんでした。

Windows C ランタイム ライブラリは Windows に付属していると思いましたか?VC++ではだめですか?ありがとう。

編集:まず、ご回答いただきありがとうございます。今思うと、Windows のランタイム ライブラリについてよくわかりません。つまり、最初の部分は、Windows の内部には win32 API があり、それで問題ありません。私はそれを知っていました。また、Win32API はカーネル部分とユーザー部分からのものです。

しかし、GDI のような関数は DLL としてアクセスされると常々思っていました (今でもそう信じています)。しかし、私は次のような機能さえも考えました printf 一部の Windows ファイルにも同様のものがあります。

それで、「シンプル」は次のように機能することがわかっているとき、私は正しいでしょうか? printf OS のカーネル部分のみを直接使用するよりも直接リンクする必要があり、より高度な Windows API 関数は DLL としてリンクされているため、コンパイラではなく OS で配布されますか?その後、カーネルにアクセスしますか?

つまり、GDI に絵を描くように指示すると、すべてのハードワークがユーザー モードで行われ、すべてをフレームバッファに置くカーネル関数を呼び出すのでしょうか?

そして最後に考えたのは、なぜこの問題がこのように解決されるのかということです。つまり、VC++ ランタイムが C と WinAPI の間のレイヤーにすぎないのであれば、なぜ VC++ は WinAPI を直接呼び出すことができないのでしょうか?

役に立ちましたか?

解決

dynamic_castをし、例外処理のようなもの -

簡単な答えはmalloc関数/無料、標準入出力、iostreamのようなMSVS C / C ++ランタイム実装の機能ということと、いくつかのC ++だろう。 Visual Studioのバージョン間でこれら異なり、その異なるバージョンの異なるランタイムがあります。

ほとんどはC / C ++標準ライブラリからかなり異なるCのAPI(Win32 APIの)を持つWindows船。このAPIにMSVS C / C ++ランタイム呼び出しメモリを割り当てること、などなど。

(Iとし、彼らはそのバージョンのMSVSランタイムが含まれないように、Windowsに含まれているアプリケーションのいくつかは、MSVSとし、C ++で書かれています。)

新しいVisual Studioのバージョンがリリースされるまた、ランタイムが変化します。 A Windowsのリリースはそれよりもはるかに長く続く。

他のヒント

このoversimplificationものです要旨.のMSVCRTセットのDllを実装したパーツのC++言語です。機能 printf, memcpy などを実施したこれらのDll.

各プログラムが作られ、特定のコンパイラのセットのC++ランタイムになってい の正しいバージョン のCRTバイナリは対象機です。その結果れたアプリケーションの船のエンドユーザーとのインターフェが(通常は?) また出荷などのパッケージのこれらのDll.このパッケージを"再配布可"または"redist")が異なるための全ての組み合わせの正確なコンパイラのバージョンとついての情報を表示します.例えば、あなたが別の個別redistsは:

  • MSVC10、64ビットwindows
  • MSVC10,32ビットwindows
  • MSVC9、64ビットwindows
  • MSVC9SP1、64ビットwindows

など。

あり、Windows通常"より、"一部のCRT.ただし、付属のバージョン(s)が必要であると考えるためのアプリに同梱されます。WindowsすべてのアプリのためMSVC8SP2やアプリの作成にMSVC10、CRT 必要な現在のボックスだからこその走ります。

このはなぜ普通の練習船のアプリとredists.

編集:

よHoudiniマジックのようなものかを予測し、次の質問は"がんを取得しまredists?"

その答えは、MicroSoft.み検索"msvc9x64redist"としました:

http://www.microsoft.com/downloads/en/details.aspx?familyid=bd2a6171-e2d6-4230-b809-9a8d7548c1b6&displaylang=en

これらは、C および C++ の標準ライブラリ関数を実装するライブラリです。などの標準機能 printf これらのライブラリに実装されています。

コア Windows ライブラリは、システム コールへのインターフェイスのみを提供します。の Win32 API, フル機能の Windows アプリケーションを構築するために必要なのはこれだけであるためです。VC++ ライブラリはほとんどがこの API のラッパーであり、 glibc Linux 上のライブラリ。

例として、 malloc C ライブラリの VirtualAlloc メモリを割り当てるための API。

。これは、コードのビットハンドルアプリケーションの起動/シャットダウンということで、メモリの割り当て/割り当て解除、ファイルを読み書きするためのサポート、など。

- のVisual C ++「ランタイム」を必要としてコンパイル

プログラム

これは、オペレーティングシステムの一部ではない、と最終的なアプリケーションの一部ではありません - 。すべてのC ++は、アプリケーションがそれを共有することができますので、ランタイムは個別にインストールされ、デフォルトでは

各バージョンでの方法のわずかな違いと改善のすべてのこの作品があるので、また、ビジュアルCの各バージョンは++、独自のランタイムのインストーラを持っています。異なるプラットフォーム用のランタイムの異なるverisons(例えば、x86およびx64)

もあります。

そこで、 "Visual StudioのXXXXランタイムのインストーラ(YYY)" の数XXXXは、Visual Studioのバージョン(2005、2008、2010、など)で、YYYは、通常の "x86" でマイクロソフトから利用可能なダウンロードがありますまたは "x64の" ます。

必要に応じて

ランタイムを必要とするほとんどのアプリケーションが自動的にインストールされますので、一般的にエンドユーザーは、これらの再配布可能の非常に認識していません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top