C++ 应用程序中 嵌入的python脚本与C++程序的互相调用(访问 通信)
来源:互联网 发布:淘宝装修店招图片 编辑:程序博客网 时间:2024/05/16 14:00
本文提供一种不通过编译c++程序为动态库的方式,通过这种方式使python脚本能够访问c++编写的模块,同时c++模块能够直接访问c++宿主程序的变量。
手头项目有个应用,需要在c++编写的程序中嵌入python脚本,用python脚本做一些计算,并把值传回给c++宿主程序。python脚本计算必须由c++提供计算的值,python访问宿主程序不是很方便,网上提供的方式都是用python写socket或者共享内存的方式与c++程序通信,在这里显然不是很方便。
有个达人想了个好办法,那就是把c++的一部分访问内部数据的代码编程一个python内建(build-in)模块,让python脚本引入这个模块和c++通信。可是问题是,python嵌入c++模块的方式只提供了编写动态库加载的例子和教程,动态库是不能直接访问c++程序的变量的。解决这个问题的办法是,直接把c++编写的python模块代码作为整个程序项目的一部分,在主程序中主动调用python的解释器加载该模块,那么就跳过了动态库的链接。而这部分代码由于就是和程序的一部分,可以直接访问程序的变量了。
主动加载模块的c++代码如下:
Py_InitializeEx(0); //初始化解释器
Py_InitModule("ModuleName", ModuleMethods); //ModuleMethonds 就是c++编写python模块中定义接口的数组,类型为PyMethodDef []
具体模块编写方法参考python手册。注意把模块分为cpp和.h文件,让主程序引用头文件,使主程序能够访问ModuleMethods数组。
- C++ 应用程序中 嵌入的python脚本与C++程序的互相调用(访问 通信)
- python 与 c/c++之间的互相调用
- python和C的互相调用
- 嵌入python脚本到c语言的应用(1)
- 嵌入python脚本到c语言的应用(2)
- Android Ndk中C与JAVA之间的互相调用
- Boost.Python C++与Python的互相调用之Python调用c/c++函数
- TCL与c/c++的互相调用
- TCL与c/c++的互相调用
- lua与C的互相调用
- Lua 脚本语言 与 C的互相调用
- JavaScript与Objective-C的互相调用
- JNI JAVA与C的互相调用
- C与C++互相调用的方法
- c程序多次调用python脚本的正确打开模式
- python中嵌入C语言脚本
- C/C++与Python互相调用
- python与C/C++互相调用
- 写给对前途迷茫的朋友:五句话定会改变你的人生
- Zw*与Nt*的区别
- 下载 XmlLite ( 包括:xmlLite.h , xmlLite.lib , xmlLite.dll )
- 分析“新秀”Silverlight如何挑战flash
- 《给初学者的Windows Vista的补遗手册》之055
- C++ 应用程序中 嵌入的python脚本与C++程序的互相调用(访问 通信)
- .net开发智能设备应用程序
- 爱上一个叫史今的男人
- JSP初学者数据库教程(四)添加数据
- 有关《大道至简》的几点讨论~
- 需求文档写作要点
- 所有技术译者必读——技术图书译文校对方法指南
- 如何使用特征码找“武林外传”Call地址
- 搜索引擎SEO外挂:一边搜索,一边看PageRank