python嵌入到C++中

把python嵌入的C++里面需要做一些步骤

  • 安装python程序,这样才能使用python的头文件和库
  • 在我们写的源文件中增加“Python.h”头文件,并且链入“python**.lib”库(还没搞清楚这个库时静态库还是导出库,需要搞清楚)
  • 掌握和了解一些python的C语言api,以便在我们的c++程序中使用

常用的一些C API函数

在了解下面的函数之前有必要了解一下**PyObject***指针,python里面几乎所有的对象都是使用这个指针来指示的。

Py_Initialize()&&Py_Finalize()

在调用任何python的c函数之前需要调用的函数,“Py_Initialize”是用来初始化python模块的,推测是加载初始化加载dll的。对应的在使用python模块之后用“Py_Finalize”来释放模块。

PyImport_ImportModule()

用来载入一个python模块,这个模块就是一般的python文件。这里需要注意的是,在加载这个模块的时候会执行模块里面所有可以执行的语句。包括import导入语句和在函数体之外的所有语句

PyObject_GetAttrString()

返回模块里面的函数

Py_BuildValue()

建立一个参数元组,一般都是用这个函数来建立元组,然后将这个元组作为参数传递给python里面的函数。

PyEval_CallObject()

调用函数,并把“Py_BuildValue”建立的元组作为参数传递给被调用的函数

源码实例

下面的实例是在c++代码中调用Python的函数,传递参数并且获取返回值

test.cpp代码

#include <iostream>
#include <Python.h>
using namespace std;int main(int argc, char* argv[])
{Py_Initialize();   //初始化PyObject* pModule = NULL;PyObject* pFunc = NULL;PyObject* pParam = NULL;PyObject* pResult = NULL;const char* pBuffer = NULL;int iBufferSize = 0;pModule = PyImport_ImportModule(“test_python");if (!pModule){cout << "get module failed!" << endl;exit (0);}pFunc = PyObject_GetAttrString(pModule, "main");if (!pFunc){cout << "get func failed!" << endl;cout << int(pFunc) << endl;exit (0);}pParam = Py_BuildValue("(s)", "HEHEHE");pResult = PyEval_CallObject(pFunc,pParam);if(pResult){if(PyArg_Parse(pResult, "(si)", &pBuffer, iBufferSize)){cout << pBuffer << endl;cout << iBufferSize << endl;}}Py_DECREF(pParam);Py_DECREF(pFunc);Py_Finalize();//cout << "hello" << endl;return 0;
}

test_python.py代码

def main(szString):return ("hello", 5)

python嵌入到C++中相关推荐

  1. python嵌入html_Python odoo中嵌入html简单的分页功能

    在odoo中,通过iframe嵌入 html,页面数据则通过controllers获取,使用jinja2模板传值渲染 html页面分页内容,这里写了判断逻辑 首页 {% if current_page ...

  2. python播放音乐同步歌词_使用Python下载歌词并嵌入歌曲文件中的实现代码

    使用python扫描本地音乐并下载歌词 这次这个真的是干货哦,昨晚弄了半晚上,,,,从8点吃完饭就开始写,一直到了快12点才弄好,,,新手,伤不起呀.... 先简单的说下吧,百度提供了一个音乐搜索的a ...

  3. python爬网络图片脚步_关于python:如何从本地计算机或网络资源将图像或图片嵌入jupyter笔记本中?...

    我想将图像包括在Jupyter笔记本中. 如果执行以下操作,则可以正常工作: from IPython.display import Image Image("img/picture.png ...

  4. python嵌入到程序_在应用中嵌入Python:转

    前面的章节讨论如何扩展Python,如何生成适合的C库等.不过还有另一种情况:通过将Python嵌入C/C++应用以扩展程序的功能.Python嵌入实现了一些使用Python更合适的功能.这可以有很多 ...

  5. python在会计工作中的应用-python有什么用(会计专业)

    python有什么用 python作为一门高档编程言语,它bai的诞生尽管du很偶尔,但是它得到zhi程序员的喜欢却是必然之dao路,Python入门简略,比较于其他言语,初学者很容易入门,除此之外, ...

  6. python嵌入c代码_怎样把Python代码嵌入到C程序

    匿名用户 1级 2017-11-03 回答 这篇文章主要介绍了将Python代码嵌入C++程序进行编写的实例,尽管通常还是Python代码中调用C++程序的情况较多...需要的朋友可以参考下 把pyt ...

  7. python嵌入shell代码_大家一起学python-Python基础1

    本节内容 Python简介 Python的发展史 选择Python 2 还是python 3? Python安装 第一个Python程序 Python变量 学习怎么输入 数据类型 数据运算基础 表达式 ...

  8. UBUNTU16.04使用CornerNet_Lite进行目标识别并嵌入到ROS中

    运行环境说明: 1)Python 3.7 2)PyTorch 1.0.0 3)CUDA 10 4)GCC 4.9.2 or above 本机测试环境说明: torch1.4+10.0+Python3. ...

  9. python在大数据分析中的应用

    每个人都喜欢Python,如果您打算开始从事数据科学事业,我们可以肯定Python在您心中已经占有特殊的位置.它直观且易于在任何平台上运行,并且具有大量令人惊叹的库和工具.与其他编程语言相比,Pyth ...

最新文章

  1. 065_const关键字
  2. XHProf报告字段含义
  3. java读取codetable_解析Java对象的equals()和hashCode()的使用
  4. mysql 将时间戳_mysql 将时间戳直接转换成日期时间
  5. java代码实际_Java 8会给你的代码带来什么:一个实际的例子
  6. 【转载】qsort 与 bsearch 的魔力
  7. 用户名、密码都有值激活提交按钮
  8. gps信号用什么软件测试,gps信号检测软件
  9. 小米平板2wifi驱动下载_小米WiFi驱动官方下载_Xiaomi小米随身WiFi驱动官方最新版下载-华军软件园...
  10. 如何下载 MMS开头的视频资源
  11. 简单漂亮的流程图模板分享
  12. 我是如何出版一本书的?(2)
  13. 系统学习机器学习之cox模型
  14. Router-view
  15. Unable to obtain current patch information due to error: 20001, ORA-20001: Latest xml inventory is n
  16. android手机密码怎样删掉,手机密码忘了怎么解锁 删除密码解锁教程
  17. IDEA运行web项目路径中去掉项目名称
  18. 上传本地仓库到github远程仓库
  19. 人机交互新时代:多维度快速看清ChatGPT(附下载)
  20. excel查找出不来了_Excel查找值不唯一,一个VLOOKUP公式拖拉出多个结果啦

热门文章

  1. chrome上很棒的爬虫插件,至少爬取博客够用了
  2. 不要在脱离这个市场的情况下讨论商业模式
  3. C++如何限制对象在堆上或栈上生成
  4. 【小松教你手游开发】【面试必读(编程基础)】堆和栈的区别(转过无数次的文章)...
  5. Linux电源管理(5)_Hibernate和Sleep功能介绍【转】
  6. 【APUE】Chapter17 Advanced IPC sign extension 结构体内存对齐
  7. LINUX性能调优方法总结
  8. ACL在路由器上设置例子
  9. hdu 2059(dp)
  10. zoj-What day is that day?