项目需要用C++来处理用python处理的数据集,所以就需要在C++中调用python。

先介绍第一种方法,python文档中给出了python c api,可以实现C++与python的互动。

先新建一个C++ Project,名字叫CallPythonFunction,在项目->属性->VC++目录,包含目录添加你自己的python的inclue文件夹路径,

在库目录添加python的libs目录,如下(记得查看自己的python安装目录)

此时去你的python安装目录下面,找到libs文件夹,可以看到里面会有好几个lib文件,都是以python+版本号.lib形式命名,python39.lib是给release使用,python39_d.lib是给debug版本使用。这个需要根据你的项目需要release还是debug版本来决定,以debug为例,找到项目->属性->链接器->输入->附加依赖项,添加python39_d.lib完整路径

此时项目属性配置已经完成,用一个demo来test一下

先编辑python文件,名字:mytest.py,定义了hello函数

  1. # -*- coding: utf-8 -*-
  2. def hello():
  3. print("Hello c++, I'm python!")

再编辑调用python的C++文件,在项目的源文件处中添加main.cpp文件,内容如下

  1. #include <iostream>
  2. #include <python.h>
  3. using namespace std;
  4. void hello()
  5. {
  6. Py_Initialize();
  7. if (!Py_IsInitialized())
  8. {
  9. cout << "Python initialization fails " << endl;
  10. return ;
  11. }
  12. PyObject* pModule = NULL;
  13. PyObject* pFunc = NULL;
  14. pModule = PyImport_ImportModule("mytest"); // 调用的文件名
  15. pFunc = PyObject_GetAttrString(pModule, "hello"); //调用的函数名
  16. PyObject_CallObject(pFunc, NULL); //执行python函数
  17. Py_Finalize();
  18. }

即可,对于python c api如何使用这里就不介绍了,网上很多类似文章。

C++调用Python_____用Python C API的更多相关文章

  1. 华为云的API调用实践(python版本)

    一.结论: 1.华为云是符合openstack 社区的API,所以,以社区的API为准.社区API见下面的链接. https://developer.openstack.org/api-ref/net ...

  2. 阿里云 API调用实践(python语言)

    1.结论:阿里云的SDK开发,其实就是远程调用API,python的代码就是一个外壳,核心是封装成一个http报文,利用json格式,进行RPC调用. 2.SDK调用API的套路如下: # -*- c ...

  3. 用 Identity Server 4 (JWKS 端点和 RS256 算法) 来保护 Python web api

    目前正在使用asp.net core 2.0 (主要是web api)做一个项目, 其中一部分功能需要使用js客户端调用python的pandas, 所以需要建立一个python 的 rest api ...

  4. 调用网易有道词典api

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #调用网易有道词典api import urllib import json class Youdao(): ...

  5. Python Elasticsearch api,组合过滤器,term过滤器,正则查询 ,match查询,获取最近一小时的数据

    Python Elasticsearch api   描述:ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.下 ...

  6. 如何用 Python 和 API 收集与分析网络数据?

    摘自 https://www.jianshu.com/p/d52020f0c247 本文以一款阿里云市场历史天气查询产品为例,为你逐步介绍如何用 Python 调用 API 收集.分析与可视化数据.希 ...

  7. 关于js调用外部部署的web api

    没想到多年之后我还得继续写这些东西.... 瀑布汗~ 最近不得不开始研究用web api MVC的项目中,在js文件里,实现点击一个按钮调用外部发布好的api,再从api把值回传给js页面,跳转. 经 ...

  8. 如何实现Python调用C代码--python与C之间如何通信(swig)

    转载: https://www.zhihu.com/question/23003213 1. C代码如何调用Python 1.1 test #include <Python.h> int ...

  9. java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)

    java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...

  10. 如何调用另一个python文件中的代码

    模块的搜索路径 模块的搜索路径都放在了sys.path列表中,如果缺省的sys.path中没有含有自己的模块或包的路径,可以动态的加入(sys.path.apend)即可.下面是sys.path在Wi ...

随机推荐

  1. [转载] MATLAB | RGB image representation

    转载自https://www.geeksforgeeks.org/matlab-rgb-image-representation/ MATLAB | RGB image representation ...

  2. unity GetComponent在android端获取对象错误

    PlayerObj pobj = go.GetComponent<PlayerObj>(); if (pobj && pobj.IsMyTeam()) { marchAct ...

  3. iOS证书签名

    苹果官方有一对密钥,即私钥和公钥,私钥在苹果后台,公钥在iOS系统中(如iPhone手机在出厂后,其中就保存有苹果官方的公钥):在Mac系统打包app时也会生成一对密钥(私钥.公钥),并保存在钥匙串中 ...

  4. fatal error: openssl/ssl.h: No such file or director

    $ sudo apt-get install libssl-dev

  5. b站

    题目描述 n条鱼,每条鱼的体积是ai 每一轮,每一条鱼一定会吃掉右边比自己小的第一条鱼,一条鱼只能被吃一次. 多少轮后,鱼的数量会稳定. 例子: 6 6 3 3 --> 6 6 3(第二个3)- ...

  6. ComPiler200002:Growing a Compiler

    http://www.cs.dartmouth.edu/~mckeeman/cs48/mxcom/gem/html/GrowingCompiler.html by Bill McKeeman and ...

  7. Linux进程调度算法

    进程的状态 进程的基本状态 就绪:进程已获得除处理机以外的所需资源,等待分配处理机资源 执行:进程正在占用处理机资源执行 阻塞:进程等待某种条件,在条件满足之前无法执行.例如发起I/O系统调用,等待I ...

  8. LOD Group

    LOD Group 调节摄像机距离,在不同的距离显示不同物体.常用于物体高低模之间的转换,如离摄像机较远时渲染低模物体,离摄像机较近时渲染高模物体.

  9. URL解码和解码

    1 String value = "张三"; 2 //对中文进行URL编码 3 value = URLEncoder.encode(value, "UTF-8" ...

  10. 实践:带您用多种姿势将存储在腾讯云COS 上的视频播放

    导语 随着5G时代的到来,短视频/直播行业开始流行,音视频逐渐成为信息传播中流量占比最大的部分.腾讯云对象存储(COS)作为可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务,早已不 ...