問題タブ [universal-crt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1199 参照

visual-c++ - ucrtbase が _CxxThrowException をエクスポートするのはなぜですか?

Dependency Walker によると、エクスポートする関数の一部で重複するのはucrtbase.dllなぜですか?vcruntime140.dll

免責事項:これは現在、私にとって純粋に学術的な関心事です。

現在、Microsoft Visual-C++ CRT 関連の DLL ファイルのレイアウトを理解しようとしています。ここで、UCRT とファイル全般に関する情報を検索します。

つまり、通常の C++ アプリでは、実行時に次の (トップレベルの) DLL 依存関係があります。

  • ucrtbase.dll- 「コンパイラに依存しない」もの
  • vcruntime<ver>.dll- 「コンパイラ依存」のもの
  • msvcp<ver>.dll- C++ 標準ライブラリ

この情報から強調できることは次のとおりです。

ブログエントリから:

... CRT を 2 つの論理部分に分割します。VCRuntime には、プロセスの起動や例外処理などに必要なコンパイラ サポート機能が含まれていました ...

およびMSDNページから:

vcruntime ライブラリには、例外処理とデバッグ サポート、ランタイム チェックと型情報、実装の詳細、特定の拡張ライブラリ関数など、Visual C++ CRT 実装固有のコードが含まれています。このライブラリは、使用するコンパイラのバージョンに固有です。

Dependency WalkerでDLL を参照しているときに、ucrt と vcruntime の両方が関数をエクスポートしていることに気付きました_CxxThrowException。この関数は、vc++ スタック トレースを見たことがあれば、よく知っているものです。

例外レコードを構築し、ランタイム環境を呼び出して例外の処理を開始します。

ucrtbase.dll上記の両方の引用が示すように、これが asからエクスポートされたことに非常に驚いています。私は、この機構がコンパイラー固有の側面にしっかりと属していると思っていたでしょう。

memcpyこれを書いているときに、他のいくつかの重複に気付きました: 標準 C ライブラリ関数 ( 、...、 、...)のごく一部はstrstrからもエクスポートされvcruntime140.dllますが、ucrtbase.

では、ここで何が起こっていて、これから何を学べるでしょうか?

0 投票する
0 に答える
504 参照

visual-studio-2015 - ユニバーサル CRT DLL の展開

Visual Studio 2015 を使用してビルドされ、CRT に動的にリンクされたアンマネージド アプリケーションをデプロイする場合、適切な vcredist_.exe 再頒布可能ファイルをターゲット PC にインストールするだけで十分ですか? 私が尋ねている理由は、VS 2015 を開始して、Universal CRT が与えられたことです。前述の再配布可能パッケージに UCRT DLL も既に含まれているかどうかはわかりません。

このブログ投稿の 2015 年 9 月 11 日の更新を読みました: https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/。アプリローカル展開が可能と書かれていますが、再配布可能な方法を使用したい場合はどうすればよいでしょうか?

誰か確認できますか?