C++与python交互


最近做的项目想玩,点灵活的套路,处理逻辑让业务方定制去,于是就由哥游戏服务端出身想到了加载脚本的套路。

地球人基本都知道,做游戏的脚本中lua使用的是最多的但是本次我们的项目是监控和报警,里面可能有复杂运算,这样子lua的库就比较贫瘠了,选择使用python,这样我就需要把python和C++做好交互。

我的需求是这样的:1主程序是C++,用户会到主程序注册,这个时候python脚本就注册过来

2在某些情况下运行python脚本,python中会调用特定的C++接口,完成某些python不方便完成的功能,比如操作数据库,调用发短信接口等。

懒人都不想写原生态的代码,就看那一个个C++向python就注册接口就不爱动手了,找了个国人写的三方库ffpython,跑了一下他的example,还是不错的,很简单,可以完成C++的静态函数,C++类想python注册,就用这个了,顺便提一下,他的example中的test_reg_function接口的第二个参数应该传int才对,不知道脚本里面为毛写成了double行,导致异常。

 

 

ffpython_t::init_py();


 

ffpython_t::add_path("/Users/bojue/sentry2/sentry-alarm/src");


CInterface_API m_api;

 

python.reg_class("CInterface_API")

.reg(&CInterface_API::GetGroupInfo, "GetGroupInfo");

 

python.init("DB_OPERATE");

python.call("fftest", "test_db_api", &m_api);

 

ffpython_t::init_py();

 

这么几行代码就OK了,可以吧CInterface_API的对象注册到python中了,需要详细研究的朋友把他的代码下载下来看下example吧。非常简单。



评论关闭