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文件夹. 否则会少很多东西.
再有GCCXML依赖MSVC. 你必须有MSVC6 7 8 9 10其中的一个版本.(目前MSVC11不支持,竖中指,fuck).
2:下载py++
地址:http://sourceforge.net/projects/pygccxml/files/?source=navbar
你需要下载2个包: pygccxml 和 pyplussplus

解压这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。可以做参考:
#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."

转载于:https://www.cnblogs.com/qqxinbao/p/3186800.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值