目录
  • 一、环境设置
  • 二、VS项目中设置
    • (1)首先在acaconda中找到include文件夹和libs文件夹,如图所示
    • (2)点击链接器,然后输入,附加依赖项,添加python36_d.lib的路径
    • (3)python代码
  • 三、可能会出现的问题
    • 总结

      一、环境设置

      windows

      VS2015

      python的话用的是acaconda自带的python环境,不同版本的acaconda自带的python不同,我的是python3.6(这一步很重要,如果使用acaconda创建的虚拟环境的python,可能会不成功)

      二、VS项目中设置

      (1)首先在acaconda中找到include文件夹和libs文件夹,如图所示

      如何在C++中调用python代码你知道吗

      然后右击C++项目,选择属性,点击VC++目录,然后在包含目录中添加include文件夹,在库目录中添加libs文件夹

      如何在C++中调用python代码你知道吗

      (2)点击链接器,然后输入,附加依赖项,添加python36_d.lib的路径

      如何在C++中调用python代码你知道吗

      因为配置为Debug,所以是添加python36_d.lib,而不是python36.lib。如果没有这个文件,直接复制python36.lib,然后命名为python36_d.lib即可。如图所示

      如何在C++中调用python代码你知道吗

      (3)python代码

      想要在C++代码中调用python中的vsdemo.py的max函数,首先python代码如图所示

      def max(a,b):
          if a>b:
              return a
          else:
              return b

      C++代码如图所示

      #include <iostream>
      #include<python.h>
      #include"stdio.h"
      using namespace std;
      int main()
      {
      	Py_Initialize();//使用python之前,要调用Py_Initialize();这个函数进行初始化
      	if (!Py_IsInitialized())
      	{
      		printf("初始化失败!");
      		return 0;
      	}
      	PyRun_SimpleString("import sys");
      	PyRun_SimpleString("sys.path.append('./')");//这一步很重要,修改Python路径
      	PyObject* pModule = NULL;//声明变量
      	PyObject* pFunc = NULL;// 声明变量
      	pModule = PyImport_ImportModule("vsdemo");//这里是要调用的文件名vsdemo.py
      	if (pModule == NULL)
      	{
      		cout << "没找到" << endl;
      	}
      	pFunc = PyObject_GetAttrString(pModule, "max");//这里是要调用的函数名max
      	PyObject* pParams = Py_BuildValue("(ss)", "3", "4");//两个字符串参数
      	char* result;
      	PyObject* pRet = PyObject_CallObject(pFunc, pParams);//调用函数 pRet是得到的结果
      	int res = 0;
      	PyArg_Parse(pRet, "s", &result);//转换结果的返回类型
      	cout << "res:" << result << endl;//输出结果
      	system("pause");
      	Py_Finalize();//调用Py_Finalize,这个根Py_Initialize相对应的。
      	return 0;
      }

      同时需要把python代码,即vsdemo.py文件,放到c++项目文件中,然后再运行

      三、可能会出现的问题

      (1)可能会出现找不到python36.dll的错误,可以从acaconda中找到该文件,复制到c++项目文件中即可,如图所示

      如何在C++中调用python代码你知道吗

      总结

      本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!

      声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。