PY++配置. 扩展python利器.

如果要从C++中间导出类或者函数到python,你可能会用到Boost.python,很方便.简洁.     但是boost.python需要编写一个定义文件:  

例如:

BOOST_PYTHON_MODULE(yuki)
{
    boost::python::def("gettext", yukigettext,
        boost::python::args("id"), "Translate message.");
}

这是一个很机械化的过程. 如果你想吧一个dll中所有类导出到python,那将是一个痛苦的过程.

不过现在有一个好东西来了. py++帮你自动生成这些代码(这个天杀的库,网上资料太少了. 折磨的我痛苦啊, 竖中指,不解释).

编译py++步骤:

1: 首先下载gccxml.

从SVN上面下载来:

https://github.com/gccxml/gccxml
然后就是用cmake编译了.
附:
在用cmake编译的时候一定要进入truck文件夹下面的cmake. 而不是GCCXML文件夹. 否则会少很多东西.
QQ截图20130712113155
再有GCCXML依赖MSVC. 你必须有MSVC6 7 8 9 10其中的一个版本.(目前MSVC11不支持,竖中指,fuck).
2:下载py++
地址:http://sourceforge.net/projects/pygccxml/files/?source=navbar
你需要下载2个包: pygccxml 和 pyplussplus
QQ截图20130712113621

解压这2个包 .

QQ截图20130712113742

然后就是用Python安装. (先安装pygccxml  再安装 py++)

QQ截图20130712114251

2个都安装完成算是OK了.

 

最后就是用我们刚刚生成的py++来为我们自动生成我们需要的代码了.

新建一个py文件:

import os
import sys
from pyplusplus import module_builder
mb = module_builder.module_builder_t(
         files=['D:/py++Test/cgh.h','D:/py++Test/cgh2.h']
        ,gccxml_path="G:/GCCXML/trunk/bin/Release")#files表示文件名列表, gccxml_path表示gccxml路径
mb.build_code_creator( module_name='libchg_py' )#参数:模块名
mb.write_module('D:/py++Test/chg_py.cc')#参数:写入文件名

运行py文件 即可生成文件.
 
这是我自己写的一个py。可以做参考:
#coding:GBK
import os
import sys
import glob
reload(sys)
sys.setdefaultencoding("GBK")
from pyplusplus import module_builder

curModuleName="libchg_py"       
gccxmlPath="G:/GCCXML/trunk/bin/Release"
Headpath="D:/py++Test/"
Headpath+="*.h"
outDir="D:/py++Test/chg_py.cc"

AllHeadFiles=glob.glob(Headpath)        #获取所有*.h文件

#files表示文件名列表, gccxml_path表示gccxml路径
mb = module_builder.module_builder_t(
         files=AllHeadFiles
        ,gccxml_path=gccxmlPath)
mb.build_code_creator( module_name=curModuleName)#参数:模块名
mb.write_module(outDir)#参数:写入文件名
print "Export Success."

posted on 2013-07-12 18:05  xinbao  阅读(2028)  评论(0编辑  收藏  举报