Visual Studioソースコードから.net dllをビルドしてlog4Netサイトhttps://logging.apache.org/log4net/download_log4net.cgiで提供し、ニーズに合った適切なターゲットフレームワークを選択することをお勧めします。
次に、C++がそれらを消費できるように、必要なクラスをCOMクラスとして公開することができます。コードにいくつかのインターフェースを追加する必要があります。
この記事は、その後、あなたのdllに署名https://support.microsoft.com/en-ca/kb/828736
を「ビジュアルStudio.NETまたはVisual Studio 2005でネイティブのVisual C++コードからマネージDLLを呼び出す方法」偉大な説明を示します。
ます。SN.exe -k MyKeyFile.SNK
AssemblyInfo.csのコードの次の行は、以下で
[assembly: ComVisible(false)]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
ファイル交換。
[assembly: ComVisible(true)]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("..\\..\\MyKeyFile.SNK")]
Ctrl + Shift + Bキーを押して、C++プロジェクトで使用するマネージDLLを生成します。
Log4Netの問題点は、テスト開始時にlog4Netを使用してログファイルに書き込むことができますが、テストのいくつかのステップの後に「ファイルまたはアセンブリをロードできませんでした」という例外が突然発生することです。 。テストは.Netであり、これはアンマネージコード(C++)に接続されたラッパーレイヤーに呼び出されます。 Unmanageコードでは例外が発生しますが、.Net(MSテスト)では発生しません –
この例のように、問題のある無差別コード呼び出しインターフェイスの周囲に、マネージコードへのラッパーを記述する必要があります。 //インターフェイスの実装。 パブリッククラスManagedClass:ICalculator { public int Add(int Number1、int Number2) { return Number1 + Number2; } } – Markus
私はラッパーを持っています!これは私のアンマネージコードのラッパーの答えです。http://stackoverflow.com/questions/315051/using-a-class-defined-in-a-c-dll-in-c-sharp-code/36574077#36574077 –