Python脚本与C++程序互相调用的实际操作

开发 后端
本文主要介绍的在ShiiteC++ 应用程序中如何嵌入Python脚本和C++程序互相调用的实际操作,以下就是文章内容的详细介绍。

本文所要阐述的是一种不用编译c++程序为动态库的相关方式,使用此种方式把python脚本对c++进行访问与编写的相关模块,的相关内容的介绍,以下就是相关内容的具体介绍,望你会有所收获。

手头项目有个应用,需要在c++编写的程序中嵌入python脚本,用python脚本做一些计算,并把值传回给c++宿主程序。python脚本计算必须由c++提供计算的值,python访问宿主程序不是很方便,网上提供的方式都是用python写socket或者共享内存的方式与c++程序通信,在这里显然不是很方便。

有个达人想了个好办法,那就是把c++的一部分访问内部数据的代码编程一个python内建(build-in)模块,让python脚本引入这个模块和c++通信。可是问题是,python嵌入c++模块的方式只提供了编写动态库加载的例子和教程,动态库是不能直接访问c++程序的变量的。

解决这个问题的办法是,直接把c++编写的python模块代码作为整个程序项目的一部分,在主程序中主动调用python的解释器加载该模块,那么就跳过了动态库的链接。而这部分代码由于就是和程序的一部分,可以直接访问程序的变量了。

主动加载模块的c++代码如下:

  1. Py_InitializeEx(0); 

 初始化解释器

  1. Py_InitModule("ModuleName", ModuleMethods); 

 ModuleMethonds 就是c++编写python模块中定义接口的数组,类型为

  1. PyMethodDef [] 

具体模块编写方法参考python手册。注意把模块分为cpp和.h文件,让主程序引用头文件,使主程序能够访问ModuleMethods数组。 以上就是对C++ 应用程序中 嵌入Python脚本与C++程序的互相调用DE 相关的内容的介绍,望你会有所收获。

【编辑推荐】

  1. 用Python连接PostgreSQL数据库所需版本的介绍
  2. Python连接数据库的实际操作方案的介绍
  3. 用Python 2.5.1帮助文档设置的实际操作方案介绍
  4. 对Python技巧——代码效率的实际应用详解
  5. 在python正则表达式教程中正确使用正则表达式方案
责任编辑:佚名 来源: 互联网
相关推荐

2010-03-24 13:04:12

Python嵌入

2010-03-26 11:00:55

Python嵌入CC++

2010-03-24 13:17:35

Python嵌入

2010-02-03 10:23:47

C++操作符重载

2010-02-03 16:56:20

C++自定义类

2010-04-29 17:05:58

Oracle 脚本

2010-03-17 15:01:24

Python复制文件

2010-03-09 18:55:27

Python djan

2010-05-27 17:35:36

MYSQL DELET

2010-05-18 09:31:05

MySQL修改表

2010-03-10 19:00:20

Pythonnext函

2010-04-21 17:09:17

Oracle安装

2010-03-23 17:24:08

Python遍历目录树

2010-05-14 16:34:31

Mysql安装

2010-03-12 15:29:19

Pythonexe

2010-07-23 14:26:37

SQL Server存

2010-05-13 17:00:32

MySQL启动方法

2010-05-28 18:16:43

MySQL 操作日志

2010-05-10 10:19:28

Oracle实战RMA

2010-03-16 12:39:09

python for
点赞
收藏

51CTO技术栈公众号