簡體   English   中英

在C#和C之間共享變量

[英]Sharing variable between C# and C

我已經看到了幾乎相同問題的一些答案,但是沒有C#代碼可以幫助我理解。

我有一個C ++ .DLL文件注入到內存中。 雖然,此DLL只是從應用程序中獲取信息,還從C#.exe獲取信息。

C#exe信息將每秒更改一次,而C ++信息將僅更改一次或兩次。

如何在兩個正在運行的應用程序之間創建共享變量,以及如何對其進行讀寫?

謝謝!

如果要構建可靠的解決方案,則應使用以下方法:

  1. 從C#到C ++函數的調用。 保持參數類型盡可能簡單。 任何C#線程都可以進行這些調用。
  2. 啟動您自己的C ++線程,這些線程僅讀取/修改C ++數據並僅調用C ++方法和函數。
  3. 使用Windows內核對象進行同步和其他類似的工作。 一方發出事件信號而另一方等待事件就很好了。

其他類型的交互也是可能的,但我不鼓勵使用它們。 這些附加類型並不簡單,定義也不明確,包含警告等。上述3種方法允許構建復雜的應用程序。

要調用C ++函數,請添加到程序集中:

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

這表明User32具有您要調用的入口點MessageBeep 之后,您可以將其用作任何其他功能:

MessageBeep(0);

您可以通過類似的方式在自己的DLL中調用GetProcAddress或任何其他入口點。

我將使用命名管道,以便兩個進程可以輕松地相互通信! (C#服務器和C ++客戶端)

感謝大家的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM