/clrが/mtdと互換性がない方法と理由を誰かに説明してもらえますか?これの代替手段は何ですか?/mdまたは/mddを使用すると、内部で何が起こりますか?
私の知る限り、/clrと/mtdを組み合わせて使用することはありません。これを行う方法があるかどうか誰かが説明できますか?また、/clrがVisualStudioの/mtおよび/mtdと互換性がない方法と理由を教えてください。
/clrが/mtdと互換性がない方法と理由を誰かに説明してもらえますか?これの代替手段は何ですか?/mdまたは/mddを使用すると、内部で何が起こりますか?
私の知る限り、/clrと/mtdを組み合わせて使用することはありません。これを行う方法があるかどうか誰かが説明できますか?また、/clrがVisualStudioの/mtおよび/mtdと互換性がない方法と理由を教えてください。
手がかりがここにあると思います:
/clr コンパイラ スイッチを使用している場合、コードはインポート ライブラリ msvcmrt.lib にリンクされます。インポート ライブラリは、マネージ コードとネイティブ CRT 間のプロキシを提供する新しいライブラリ msvcm80.dll を参照します。静的にリンクされた CRT ( /MT または /MTd オプション) を /clr と共に使用することはできません。代わりに、動的にリンクされたライブラリ (/MD または /MDd) を使用してください。
/clr フラグにより、コードは新しい dll msvcm80.dll を参照します。これは、マネージ コードと CRT の間のプロキシとして機能します。このプロキシが何をするのか正確に言うのは難しいですが、マネージ ヒープ、ガベージ コレクション、マネージ スレッドなどの割り当てのためのインターフェイスとして機能すると思います。CRT の静的バージョンをリンクすると、プロキシはランタイム ライブラリへの呼び出しをインターセプトできなくなります。