信頼できるソリューションを構築したい場合は、以下を使用する必要があります。
- C# から C++ 関数への呼び出し。パラメータの型はできるだけ単純にしてください。どの C# スレッドでもこれらの呼び出しを行うことができます。
- C++ データのみを読み取り/変更し、C++ メソッドと関数のみを呼び出す独自の C++ スレッドを開始します。
- 同期やその他の同様のものには、Windows カーネル オブジェクトを使用します。一方がイベントを通知し、もう一方がそれを待つ場合は問題ありません。
他のタイプの対話も可能ですが、使用しないことをお勧めします。これらの追加のタイプは単純ではなく、明確に定義されておらず、警告などが含まれています。上記の 3 つの方法を使用すると、複雑なアプリケーションを構築できます。
C++ 関数を呼び出すには、アセンブリに次を追加します。
[DllImport("User32.dll")]
static extern Boolean MessageBeep(UInt32 beepType);
これは、User32MessageBeep
に呼び出したいエントリ ポイントがあることを示しています。その後、他の関数として使用できます。
MessageBeep(0);
同様の方法で、GetProcAddress
または独自の DLL 内の他のエントリ ポイントを呼び出すことができます。