Cpp Python通信初探
初衷
游戏服务端比较流行的组合是cpp+lua
,似乎是从云风dalao的skynet开始的,不过相对来说我更喜欢python
,而且现在工作也用的是python
,所以毫无疑问,用python
必须的.作为将来拥有自己的服务端计划的一环,先初探一下他们之间的通信
工具环境
- visual studio 2013
- Python 2.7.12
创建工程添加依赖
如果需要在Debug环境下运行程序,得先对Python做一些处理
- 把
%PythonRoot%/libs/Python27.dll
拷贝一份改名为Python27_d.dll
,为Debug所用 - 修改
%PythonRoot%/Libs/Pyconfig.h
,搜索#define Py_DEBUG
注释掉此行,因为Debug模式下有些宏在python27.dll
里面是没有的
- 把
用vs创建一个空程,进入工程属性
- 如果你的
python
是32位,无视这步; 点击配置管理器,活动解决方案平台/新建 x64平台,用于跑64位python
: - CC++/常规/附加包含目录 -> ‘%PythonRoot%/include/‘ 把python安装目录下的include包含进去
- 链接器/常规/附加库目录 ->
%PythonRoot%/libs/
把python安装目录下的libs库包含进去 - 创建main.cpp
- 如果你的
入门代码
先写一份first.py代码,我放在与main.cpp相同目录下
main.cpp中如下代码
结果是:
在first.py中定义了两个函数,一个是传入字符串返回一个字符串,一个是传入ab返回a+b。
main.cpp中先Py_initialize()如果成功了,先调用一个简单串,相当于在py环境下输入这句话,然后分别调用了py中的两个函数
有了注释我想应该很容易看懂了
- 包含
Python.h
头文件 - 从
Py_Initialze()
开始,到Py_Finalized()
结束 - 一切对象都是
PyObject*
//我用了auto
- 空参数时传
null
over.入门还是挺简单的.
python 调用cpp
转swig