Visual C++とC#の混在ソリューションがあり、デバッグモードで実行しようとすると、C++プロジェクトがロードしようとしているためプログラムが失敗しますmsvcp100d.dll
およびmsvcr100d.dll
。単体テストを試して実行すると同じことが起こります。msvcr100d.dllとmsvcp100d.dllがデバッグ実行パスにありません
これはリリースモードでは発生しません。私はこのライブラリの依存関係をデバッグモードで削除することができますか?
Visual C++とC#の混在ソリューションがあり、デバッグモードで実行しようとすると、C++プロジェクトがロードしようとしているためプログラムが失敗しますmsvcp100d.dll
およびmsvcr100d.dll
。単体テストを試して実行すると同じことが起こります。msvcr100d.dllとmsvcp100d.dllがデバッグ実行パスにありません
これはリリースモードでは発生しません。私はこのライブラリの依存関係をデバッグモードで削除することができますか?
デバッグモードでこのライブラリの依存関係を削除できますか?
はい、プロジェクトのプロパティでは、Cランタイムライブラリの非デバッグバージョンにリンクするようにプロジェクトのプロパティを設定します。 /MD
スイッチが必要です(デバッグバージョンを示す/MDd
ではなく)。ただし、これを行うと、CRTのデバッグ機能が失われることに注意してください。
よりよい解決策は、開発環境がどのようにボルケージされているかを理解することです。 DLLは、Visual Studioがインストールされるたびに使用可能になります。
もし '/ clr'でコンパイルすると、'/MT'はオプションになりません。 – ildjarn
真実であり、とにかくCRTへのダイナミックリンクがより良い選択肢です。 –
@ildjarn残念ながら、私は確か '/ clr'でコンパイルしています。このライブラリを利用できるようにするには、どのパス変数を変更する必要がありますか? – Ceilingfish
VC++コードは '/ clr'バリアントを使用していますか、それとも純粋にネイティブですか? – ildjarn
dllにはVSが付属していませんか?デバッグDLLは再配布可能ではありません(少なくとも再配布するつもりはありません) – pezcode
デバッグDLLは私のマシン上にありますが、何らかの理由でVisual Studioがそれらを見つけられないようです。これは、エントリポイントがC#アプリケーションであるため、C++ DLLの追加の場所を探していないためでしょうか? – Ceilingfish