将 C++ 类序列化为文件,然后在 Python 中进行基于事件的反序列​​化?

Posted

技术标签:

【中文标题】将 C++ 类序列化为文件,然后在 Python 中进行基于事件的反序列​​化?【英文标题】:Serialize C++ class to file, then event-based deserialization in Python? 【发布时间】:2015-11-09 02:34:07 【问题描述】:

我有一个用于改变复杂对象的函数的 C++ 源代码。如果没有逆向工程或以其他方式研究其类,我如何将其序列化为文件(可能在已安装的 ramdisk 上),然后在 Python 中轻松反序列化它?我需要 Swig 来执行此操作吗?

我只想在 C++ 源代码中添加一两行代码(在对象发生变异之后),每次更新文件时生成一个 Linux 用户信号或其他东西,并为该自定义信号安装一个 Python 处理程序反序列化文件并对对象做一些事情。

也欢迎使用更简单的语言间、进程间技术来实现这一点。

【问题讨论】:

【参考方案1】:

您可以使用protobuf 将复杂数据保存在 C++ 中并在 python 中读取。两种语言都有库,并且由于 protobuf 足够流行,您很容易找到有关其使用的帮助。

【讨论】:

看起来没有简单的方法来获取现有的 c++ 代码并使用 protobuf “扩展”它。似乎通常的工作流程是 1)在 .proto 文件中定义消息,2)使用特殊的编译器生成 c++ 头文件/实现文件。拥有可以从 .h 文件网络生成 .proto 的东西会很有帮助

以上是关于将 C++ 类序列化为文件,然后在 Python 中进行基于事件的反序列​​化?的主要内容,如果未能解决你的问题,请参考以下文章

python 读取csv文件并将其序列化为字典列表的脚本{column:value}然后可以将dicts用于计数或cr

C++ 类序列化

如何将 Python 字典序列化为字符串,然后再返回字典?

将类结构序列化为 XML 似乎添加了一个 NewLine 字符

Python将类序列化为JSON [重复]

PRAW:将评论和提交对象序列化为 JSON