通过C++;对象到C# 我有一个C语言应用程序,它接收从C++应用程序中的文本作为序列化的数据(使用升压库在C++中序列化数据)现在序列化的数据实际上是一个对象,我需要将其转换为类似的.Net对象。为了实现这一点,我被告知可以编写一个C++/CLI组件作为dll,它可以对文本数据进行反序列化(使用用于序列化的同一个库),并将其传递回C#应用程序。 我在C++和CLI中没有编程经验,但是我在C++中没有任何问题的编程。但是我不认为C++和CLI很难被捕捉。我的问题是,我不明白创建C++/CLI应用程序如何将对象传递回C#?任何提示,教程,链接将不胜感激

通过C++;对象到C# 我有一个C语言应用程序,它接收从C++应用程序中的文本作为序列化的数据(使用升压库在C++中序列化数据)现在序列化的数据实际上是一个对象,我需要将其转换为类似的.Net对象。为了实现这一点,我被告知可以编写一个C++/CLI组件作为dll,它可以对文本数据进行反序列化(使用用于序列化的同一个库),并将其传递回C#应用程序。 我在C++和CLI中没有编程经验,但是我在C++中没有任何问题的编程。但是我不认为C++和CLI很难被捕捉。我的问题是,我不明白创建C++/CLI应用程序如何将对象传递回C#?任何提示,教程,链接将不胜感激,c#,c++,c++-cli,C#,C++,C++ Cli,编辑正在发送的对象在C中是这样的++ class person { public: person() { } person(int age) : age_(age) { } int age() const { return age_; } private: friend class boost::serialization::access; templa

编辑正在发送的对象在C中是这样的++

class person 
{ 
public: 
    person() 
    { 
    } 

    person(int age) : age_(age) 
    { 
    } 

    int age() const 
    { 
        return age_; 
    } 

private: 

    friend class boost::serialization::access; 

    template <typename Archive> 
    void serialize(Archive &ar, const unsigned int version) 
    { 
        ar & age_; 
    } 

    int age_; 
}; 
班级人员
{ 
公众:
人()
{ 
} 
个人(年龄):年龄(年龄)
{ 
} 
int age()常量
{ 
回归年龄;
} 
私人:
好友类boost::serialization::access;
模板
无效序列化(存档和ar,常量未签名整数版本)
{ 
ar&age;
} 
国际年龄;
}; 

您应该阅读namespace System.Runtime.InteropServices.Marshal

这是一篇关于如何将二进制数据结构封送到c#结构的优秀文章。

以下是类型参考-

它被称为编组,通过编组,您可以使用C#读取结构或复杂类型中的二进制或文本数据


你应该考虑的几个问题是结构的打包和对齐。用谷歌搜索这些术语将产生非常有用的结果

我可能错了,但XML的核心不就是它与平台和语言无关吗?只要接收到C#类,它就会镜像XML文件中的数据结构
(也就是说,它有一个int age_变量),使用C#中的普通XML文件解析器对其进行反序列化应该不会有任何问题。XML文件是由C++应用程序编写的,与手工编写它无关。

有几种选项可供您使用。无论是哪种语言序列化了对象,都可以在c#中反序列化对象。正如您所说,它是文本,您应该能够轻松地用c#完成它。对于二进制对象也可以这样做。请提供更多细节。是的,它是文本。你能提到一些选项吗,我知道数据是使用C++中的Boost库进行序列化的。