将一段C ++代码包装到Python中

时间:2012-03-06 14:54:08

标签: c++ python boost-python python-c-api python-c-extension

我有一段生成数据的C ++代码。我想将数据暴露给Python。但它并不像听起来那么微不足道......

说这个C ++编译成二进制文件cppcode。由于框架设置的复杂方式,我只能将代码作为

运行
./cppcode {command line arguments} 

在cppcode内部,它生成我想从Python访问的数据。我知道如果我能以某种方式将程序重写为

CppClass cpp; 
cpp.run( args );

然后我可以用Boost Python包装CppClass,构建一个实例,运行参数,并访问generate中的数据。

但现在我只能将代码作为./cppcode {command line arguments}

运行

我不能只从Python调用./cppcode,因为在./cppcode完成后,它的内存将被系统重新收集,我再也看不到它了。有没有办法解决这个问题?

我能想到:(1)让./cppcode将数据转储到磁盘中让python读取它。 (2)将数据转储到stdout并将其转换为python脚本。但无论哪种方式,我都必须在Python中进行一些可能很慢的字符串解析。有办法解决它吗?

1 个答案:

答案 0 :(得分:1)

您可以将来自ccpcode的JSON格式的数据转储到磁盘上,然后只需使用python中的simplejson来解析它。然后你就不必编写自己的解析器了。

以下是C ++ JSON模块的一些示例:https://stackoverflow.com/questions/245973/whats-the-best-c-json-parser