簡體   English   中英

C++ 中的序列化和 C# 中的反序列化,反之亦然,命名為 pipe

[英]Serialization in C++ and Deserialization in C# and vice versa for named pipe

我有兩個進程(.exe),一個在 C++ 中實現,另一個在 C# 中實現。 我想要的是兩個過程之間的通信。 為此,我選擇了“命名管道”方法。 我面臨的問題是將 class object 從一個應用程序傳遞到另一個應用程序。 我可以輕松發送字符串數據,但我不知道如何將 class object 從應用程序發送到另一個應用程序。 我的 class 結構如下:

enum information
{
 TITLE,
 STATUS,
 DEBUG,
 INFO,
 OTHER
};

class CInformation
{
  private:
    information _info;
    string _text;
  public:
    void setInformation(information info, string text) { _info = info; _text = text; }
    inline information GetInfo() { return _info; }
    inline string GetText() { return _text; }
};

so how to Serialize this class in C++, send it over named pipe and Deserialize it in C# and vice versa also for the same class. 請給我一個例子。 我對任何其他解決方案也持開放態度,也可以在兩個過程之間進行雙向通信。

正如您選擇命名管道一樣,您現在必須選擇一種序列化方法/約定。 如果您的 C++ 代碼可以通過 CLI 訪問 .Net,那么您將有一個良好的開端,因為您可以確保在兩端應用相同的規則。 否則,您可以選擇 JSON、XML、簡單的文本字符串甚至二進制。 您可能有做出此選擇的技術原因(數據和結構與緊湊性等),或者它可能由工具/框架的可用性驅動(可能引導您轉向 JSON 或 XML)為您進行(反)序列化。 請注意,即使使用簡單的文本字符串,您也必須確保雙方使用相同的編碼(UTF-8、ASCII、...)。

請注意,C++ 和 C# 不做任何“語言保證”以任何“兼容”方式實現類,這取決於 map 兩個視圖彼此和/或 JSON 序列化類的示例結構布局。

暫無
暫無

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

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