python与C++混合编程

python与C++混合编程

ID:37903583

大小:3.80 MB

页数:10页

时间:2019-06-02

python与C++混合编程_第1页
python与C++混合编程_第2页
python与C++混合编程_第3页
python与C++混合编程_第4页
python与C++混合编程_第5页
资源描述:

《python与C++混合编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、普通方式一、环境搭建1.安装python2.6(python3.xx版本编译失败,未找到原因)。2.配置vs2008项目(python自带的python26.dll为release版本,所以vs2008项目也必须调整为release,但是通过设置也可以对release进行调试,如果需要debug版本可以从网上下载已有的python26_d.dll和python26_d.lib,也可以下载python源码自己编译。)① C/C++---->常规--->附件库包含目录,加入python头文件目录,如下图:② 连接器--->常规--->附件库目录。加入python库文件目录,如下图:③ 

2、连接器--->输入--->附加依赖项。加入python库文件名,如下图:二、代码实现1.C++调用python① 高层次嵌入python(所谓的高层次嵌入主要是指程序与脚本间没有交互)#includeintmain(){Py_Initialize();/*Python解释器初始化*/PyRun_SimpleString("print'hi,python!'");/*运行python字符串*/Py_Finalize();/*结束Python解释器,释放资源*/return0;}① 低层次嵌入pyton,可以交互。但是只限python的基本类型数据(整型、浮点型、字

3、符串、元组、列表和字典)。C++代码:#include#includeintmain(intargc,char*argv[]){PyObject*modulename,*module,*dic,*func,*args,*rel,*list;char*funcname1="sum";inti;Py_ssize_ts;printf("-==在C中嵌入Python==-");/*Python解释器的初始化*/Py_Initialize();if(!Py_IsInitialized()){printf("初始化失败!");return-1;}/*导

4、入Python模块,并检验是否正确导入*/modulename=Py_BuildValue("s","pytest");/*pytest参数,为python脚本,此处的意思是导入当前路径下名称为pytest.py的python脚本文件*/module=PyImport_Import(modulename);if(!module){printf("导入pytest失败!");return-1;}/*获得模块中函数并检验其有效性*/dic=PyModule_GetDict(module);if(!dic){printf("错误!");return-1;}/*获得sum函数地址并验证

5、*/func=PyDict_GetItemString(dic,funcname1);if(!PyCallable_Check(func)){printf("不能找到函数%s",funcname1);return-1;}/*构建列表*/list=PyList_New(5);printf("使用Python中的sum函数求解下列数之和");for(i=0;i<5;i++){printf("%dt",i);PyList_SetItem(list,i,Py_BuildValue("i",i));}printf("");/*构建sum函数的参数元组*/args=PyTuple_N

6、ew(1);PyTuple_SetItem(args,0,list);/*调用sum函数*/PyObject_CallObject(func,args);/*释放资源*/Py_DECREF(list);Py_DECREF(args);Py_DECREF(module);/*结束Python解释器*/Py_Finalize();printf("按回车键退出程序:");getchar();return0;}Python代码,pytest.py文件内容。importmath#导入python自带math库,可用于简单的数学计算defsum(p1):#定义sum函数count=len(

7、p1)sum=0foriinrange(count):#求数组中所有元素的和sum+=p1[i]print(sum)1.Python调用C++(使用python中的ctypes模块可以很方便的调用windows的dll(也包括linux下的so等文件))fromctypesimport*dll=CDLL("add.dll")printdll.Add(1,102)结果:103利用boost库中的,boost.python方式一、环境搭建1.下载boost库,自己编译,或

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。