1.Python脚本,名称为py_add.py

def add(a=1,b=1):print('Function of python called!')print('a = ',a)print('b = ',b)print('a + b = ',a+b)

2.C代码

#include <stdio.h>
#include <stdlib.h>
#include <Python.h>int main(int argc,char **argv)
{//初始化,在使用python系统前,必须使用Py_Initialize对其进行初始化。它会载入Python的内建模块并添加系统路径到模块搜索路径中。Py_Initialize();//判断初始化是否成功if(!Py_IsInitialized()){printf("Python init failed!\n");return -1;}//PyRun_SimpleString 为宏,执行一段python代码//导入当前路径PyRun_SimpleString("import sys");PyRun_SimpleString("sys.path.append('./')");PyObject *pName = NULL;PyObject *pModule = NULL;PyObject *pDict = NULL;PyObject *pFunc = NULL;PyObject *pArgs = NULL;//加载名为py_add的python脚本pName = PyString_FromString("py_add");pModule = PyImport_Import(pName);if(!pModule){printf("Load py_add.py failed!\n");getchar();return -1;}pDict = PyModule_GetDict(pModule);if(!pDict){printf("Can't find dict in py_add!\n");return -1;}//找到函数名为add的函数    pFunc = PyDict_GetItemString(pDict,"add");if(!pFunc || !PyCallable_Check(pFunc)){printf("Can't find function!\n");getchar();return -1;}/*向Python传参数是以元组(tuple)的方式传过去的,因此我们实际上就是构造一个合适的Python元组就可以了,要用到PyTuple_New,Py_BuildValue,PyTuple_SetItem等几个函数*/pArgs = PyTuple_New(2);//  PyObject* Py_BuildValue(char *format, ...) //  把C++的变量转换成一个Python对象。当需要从 //  C++传递变量到Python时,就会使用这个函数。此函数 //  有点类似C的printf,但格式不同。常用的格式有 //  s 表示字符串, //  i 表示整型变量, 如Py_BuildValue("ii",123,456)//  f 表示浮点数, //  O 表示一个Python对象PyTuple_SetItem(pArgs,0,Py_BuildValue("i",123));PyTuple_SetItem(pArgs,1,Py_BuildValue("i",321));//调用python的add函数PyObject_CallObject(pFunc,pArgs);//清理python对象if(pName){Py_DECREF(pName);}if(pArgs){Py_DECREF(pArgs);}if(pModule){Py_DECREF(pModule);}//关闭python调用Py_Finalize();return 0;}

3.编译

gcc -I/usr/include/python2.7/  mian.c -o main -L/usr/lib/ -lpython2.7

备注:链接Python的库需要在最后,否则可能出现以下错误提示:
undefined reference to ‘Py_Initialize’

参考博客:https://blog.csdn.net/magictong/article/details/8947892

Linux C调用Python 函数相关推荐

  1. c调用python函数_python - Linux C调用Python 函数

    1.Python脚本,名称为py_add.py def add(a=,b=): print('Function of python called!') print('a = ',a) print('b ...

  2. C++回调函数中调用Python函数出现的死锁问题调试及解决

    一.查找死锁原因: 1.使用gdb exe指令进入gdb命令行,再输入r运行可执行文件 gdb /home/sdhm/catkin_ws/devel/lib/gpd_ros/gpd_server GN ...

  3. C++调用Python函数

    From: http://www.flatws.cn/article/program/c/2010-08-24/9677.html Python代码在实现某些功能的时候非常方便,如果能够将Python ...

  4. VS2017 QT/C++ 调用python函数传图像

    原文:VS2019 C++ 调用python函数/类对象的方法_ 蜗牛在听雨的博客-CSDN博客_c++调用python函数 1.c++调用python类(传图像参数) ,编译出错,解决方法: 因为需 ...

  5. python中execute函数_在excel中调用python函数

    效果: 通过excel引用在py文件中写好的load_settle()函数,可以快捷的获取对应的历史结算价. 使用方法: 1.首先安装office,我用的是2016版本. 2.安装python,推荐使 ...

  6. C++和Python混合编程:C++调用Python函数

    文章目录 一.C++直接运行python代码的控制台Demo 二.环境配置 三.C++调用Python函数 C++传入Python的参数格式转换 C++调用Python[有参有返回值]函数 C++运行 ...

  7. Excel单元格使用xlwings包调用python函数的公式,截取子网页(标题)的试验 问题求助CSDN

    Excel单元格使用xlwings包调用python函数的公式,截取子网页(标题)的试验 问题求助CSDN Python 环境:python3.7 的conda上的py3环境 Excel 2010 E ...

  8. html怎么调用python,使用HTML调用python函数

    我在python中有一个显示名称列表的函数.使用HTML调用python函数 def search(): with open('business_ten.json') as f: data=f.rea ...

  9. 实践在C++中调用Python函数

    目标 目标是在C++中调用Python函数,给定输入,得到输出. 主要参考: 如何实现 C/C++ 与 Python 的通信? - 知乎 C++调用Python脚本中的函数 - Achimesir - ...

最新文章

  1. 实话实说:中文自然语言处理的N个真实情况
  2. 华为云工业智能体,做智能化最“硬核”
  3. lan交换和无线教师手册_无线AP组网方式有多种,办公楼的无线覆盖系统的组网方式有哪些?...
  4. Android 系统(36)---Android O、N版本修改dex2oat编译选项
  5. java设计模式—工厂模式
  6. 刚刚,2021 ACM Fellow放榜!李飞飞、谢涛、刘铁岩等13名华人学者当选
  7. pandas 第八章 文本数据
  8. 《算法导论》第16章-贪心算法 16.1-活动选择问题(含C++代码)
  9. 笔记--利用python下载bilibili视频
  10. webpack工具知多少(上篇)
  11. 搞IT的you知道这些么……
  12. 工程师小哥魔术揭秘“三仙归洞”,把我都看蒙了!
  13. 谷歌AdMob广告接入(插屏广告)
  14. 状态空间离散化matlab,现代控制理论:3.4g 线性连续系统状态空间模型的离散化...
  15. 利用Python对文件夹下的TXT文件批量改名、改内容操作
  16. piwik java版_Piwik Mobile 2 - Web Analytics
  17. 解决github无法访问的办法
  18. PCB入门学习—原理图的绘制2
  19. “Error 1923 occurs when you try to update Adobe Acrobat DC or Acrobat Reader DC” 的解决办法
  20. 三星手机安装linux系统,android – 在Linux上安装带有MTP的三星Galaxy Tab 2 7.0

热门文章

  1. 把计算机中数据刻录到光盘上称为,XP系统下如何将数据刻录到光盘中?XP系统将数据刻录到光盘的方法...
  2. 【指标体系构建】标准化处理+熵权法
  3. 跨平台API对接(Python)的使用
  4. IDEA去掉屏幕中间的白色竖线
  5. 32908字长文理解Large Vision Model:Segment Anything
  6. 树莓派移动文件权限获取
  7. 【2】激活函数与Loss函数求导
  8. 计算机话题作文,雅思话题作文范文:电脑与现代教育
  9. 笔记二:Maven+SSM之JSON简介
  10. mysql 从第几位开始截取_Mysql字符串截取函数SUBSTRING的用法说明