将C 对象传递到C#

Passing a C++ object to C#

本文关键字:对象      更新时间:2023-10-16

i有一个C#应用程序,该应用程序正在接收序列化数据作为文本从C 应用程序(使用Boost库在C 中序列化)现在,序列化数据实际上是我需要的对象要转换为一个类似的.NET对象。为了实现此目的,我被告知我可以将C /CLI组件写为DLL,可以将文本数据(使用用于序列化的相同库)并通过它回到C#应用程序。我没有在C /CLI中编程的经验,但是我在C 中没有任何问题编程。但是我不认为C /CLI很难抓住。我的问题是,我没有了解如何创建C /CLI应用程序将对象传递给C#?任何提示,教程,链接都将不胜感激

编辑要发送的对象是在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_; 
}; 

您应该为命名空间system.runtime.interopservices.marshal

做一些阅读

这是一篇关于如何将二进制数据 - 结构到C#结构的出色文章。http://www.codeproject.com/articles/66243/marshaling-with-with-c-chapter-3-marshaling-compound-ty-ty

这是类型参考 - http://www.codeproject.com/articles/66244/marshaling-with-with-c-chapter-c-chapter-2-marshaling-simple-type

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

您在这里应该考虑的几件事是结构的包装和对齐。谷歌搜索这些条款将产生非常有用的结果

我可能是错误的,但是XML的全部要点不是平台和语言独立吗?只要您收到C#类反映XML文件中的数据结构(即它具有int age_变量),使用c#中的普通XML文件解析器将其审理来审理。XML文件是由C 应用程序编写的事实,这不比您手工编写。