簡體   English   中英

Visual Studio 2008-在C ++ / C#多項目解決方案中共享數據

[英]Visual Studio 2008 - Sharing Data in C++/C# Multi Project Solution

我有2個項目的解決方案:

  1. 一個c ++主項目
  2. ac#項目(顯示模擬器)

今天,這兩個應用程序使用環回TCP客戶端/服務器連接共享數據,但這並不是最佳選擇(定時問題..)。

我想知道是否有一種方法可以直接從c ++項目訪問c#數據,反之亦然? (似乎可以用2個c#項目實現。)如果不可能,用共享內存實現此目的的最佳方法是什么?

謝謝! 麥可

編輯:感謝您的答案。 2個項目曾經是獨立的解決方案,並且都是可執行文件-我實際上是在嘗試將2個項目合並為1個解決方案/可執行文件。 有關信息:c ++應用程序是嵌入式應用程序的PC版本-c#應用程序是LCD / HMI模擬器。

將C ++項目轉換為C ++ / CLI項目可能是最簡單的方法。 但是請注意,某些代碼在C ++ / CLI中無法正常運行(在托管可執行文件中使用使用boost :: thread的庫時,我們遇到了問題)。

您可以使用COM InteropPlatform Invoke來訪問C#中的本機代碼。

如果這不是您要的內容,請詳細說明。

命名管道?

對於通過命名管道的進程間通信,您可以在C#端簽出.NET 3.5功能http://msdn.microsoft.com/en-us/library/system.io.pipes.aspx 從C ++方面,我假設您知道等效的:)。

我知道有兩種方法可以直接訪問c ++和c#之間的內存,而無需處理封送/拆組和com的開銷。 如果需要保留代碼的c ++本機部分,那么我知道實現此目標的唯一方法是從c ++應用程序托管clr。 一個相對復雜的任務。 Google“托管公共語言運行庫”。 然后,您可以將c#代碼作為程序集加載,調用c#代碼並提供通用的共享內存樣式接口。 盡管您必須自己編寫所有共享內存支持,因為在c#/。net中我沒有找到對共享內存的直接支持。

另一種方法是使用公共語言運行時支持來編譯c ++代碼。 到目前為止,這很容易,它將為您提供c ++的所有功能和榮耀,同時允許訪問基於clr的數據類型以及在c ++和c#代碼之間來回調用的能力。 請參閱VS2008文檔中的“用於定位CLR的語言功能”。 在此過程中,pin_ptr將成為您的密友和盟友。

暫無
暫無

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

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