gpt4 book ai didi

c# - 将 C++ 对象传递给 C#

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:18:58 24 4
gpt4 key购买 nike

我有一个 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-C-Chapter-3-Marshaling-Compound-Ty

这是类型引用 - http://www.codeproject.com/Articles/66244/Marshaling-with-C-Chapter-2-Marshaling-Simple-Type

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

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

关于c# - 将 C++ 对象传递给 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12947756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com