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