0

ほぼ同じ質問に対するいくつかの回答を見てきましたが、理解するのに役立つ C# コードはありませんでした。

C++ .DLL ファイルがメモリに挿入されています。ただし、この DLL はアプリケーションから情報を取得するだけでなく、C# .exe からも情報を取得します。

C# exe 情報は毎秒変更されますが、C++ 情報は 1 回か 2 回しか変更されません。

実行中の 2 つのアプリケーション間で共有変数を作成するにはどうすればよいですか?また、その共有変数を読み書きするにはどうすればよいですか?

ありがとうございました!

4

2 に答える 2

1

信頼できるソリューションを構築したい場合は、以下を使用する必要があります。

  1. C# から C++ 関数への呼び出し。パラメータの型はできるだけ単純にしてください。どの C# スレッドでもこれらの呼び出しを行うことができます。
  2. C++ データのみを読み取り/変更し、C++ メソッドと関数のみを呼び出す独自の C++ スレッドを開始します。
  3. 同期やその他の同様のものには、Windows カーネル オブジェクトを使用します。一方がイベントを通知し、もう一方がそれを待つ場合は問題ありません。

他のタイプの対話も可能ですが、使用しないことをお勧めします。これらの追加のタイプは単純ではなく、明確に定義されておらず、警告などが含まれています。上記の 3 つの方法を使用すると、複雑なアプリケーションを構築できます。

C++ 関数を呼び出すには、アセンブリに次を追加します。

[DllImport("User32.dll")]
static extern Boolean MessageBeep(UInt32 beepType);

これは、User32MessageBeepに呼び出したいエントリ ポイントがあることを示しています。その後、他の関数として使用できます。

MessageBeep(0);

同様の方法で、GetProcAddressまたは独自の DLL 内の他のエントリ ポイントを呼び出すことができます。

于 2013-07-26T02:58:28.317 に答える
0

2 つのプロセスが簡単に通信できるように、名前付きパイプを使用します。(C# サーバーと C++ クライアント)

みんな助けてくれてありがとう!

于 2013-07-26T19:44:10.907 に答える