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,
PYCTOR()>("CInterface_API")

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

python.init("DB_OPERATE");

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

ffpython_t::init_py();

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

时间: 2024-07-29 01:14:00

C++与python交互的相关文章

Python 交互模式中 Delete/Backspace 键乱码问题

进入 Python 交互模式,按下 Delete/Backspace 键,会出现 ^H 字符 解决方式: 1. 进到 Python 的Modules目录 [[email protected] Python-2.7.12]# pwd/root/Python-2.7.12[[email protected] Python-2.7.12]# cd Modules/ 2. 取消文件中 readline 部分对应的注释 vim Setup readline readline.c -lreadline -l

python交互模式设置及VIM的tab补齐

本文出自http://wushank.blog.51cto.com/3489095/1612042 一.python交互模式设置 Python 解释器具有简单的行编辑功能. 在 Unix 系统上,任何 Python 解释器都可能已经添加了 GNU readline 库支持,这样就具备了精巧的交互编辑和历史记录等功能. 在 Python 主窗口中输入 Control-P 可能是检查是否支持命令行编辑的最简单的方法. 如果发出嘟嘟声(计算机扬声器),则说明你可以使用命令行编辑功能: 如果没有任何声音

python交互模式下的tab自动补全

python在交互模式下,输入命令的时候按tab键就按时间tab键的功能输出,在书写python时多有不便. 把下面的代码写入一个文件tab.py,放到/usr/lib/python2.6/site-packages/下 #!/usr/bin/env python import sys import readline import rlcompleter import atexit import os readline.parse_and_bind('tab:complete') histfil

Python教程(1.2)——Python交互模式

上一节已经说过,安装完Python,在命令行输入"python"之后,如果成功,会得到类似于下面的窗口: 可以看到,结尾有3个>符号(>>>).>>>被叫做Python命令提示符(prompt),此时Python在等待你输入代码.你现在可以输入一行Python代码,Python就会执行该代码.这种模式叫做Python交互模式(interactive mode),因为Python在等待你输入代码,然后执行. 例如,可以输入一个表达式,让Pytho

python交互模式下命令tab补全

python默认就可以进行tab补全命令行,在交互模式下,只要自己写个小小的tab.py模块即可:实现代码如下: #!/bin/env python  # -*- coding: utf-8 -*- # python startup file  import sys import readline import rlcompleter import atexit import os import platform # tab completion  readline.parse_and_bind

命令行模式和python交互模式

一.命令行模式 在Windows开始菜单选择“命令提示符”,就进入到命令行模式,它的提示符类似C:>:. 二.Python交互模式 在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>. 三.命令行模式与Python交互模式切换 在Python交互模式下输入exit()并回车,就退出了Python交互模式,并回到命令行模式:也可以直接通过开始菜单选择Python (command line)菜单项,直接进入Python

MySQL和Python交互

与Python交互 python3模块名:pymysql conda install pymysql conda install sqlalchemy python2模块名:MySQLdb import pymysql # 1.创建与数据库连接对象 db = pymysql.connect(host='localhost', user='haoen110', password='123', database='db4', charset='utf8') # 2.利用db方法创建游标对象 cur

python交互模式

C:\Users\Administrator>python3 Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> exit()

python交互模式下cp65001异常

unknown encoding: cp65001异常 python安装后进入命令行交互模式,输入任何代码都报unknown encoding: cp65001异常 需要将编码(UTF-8)修改为 简体中文(GBK) 在CMD窗口执行 chcp 936