VS2015配置Python3.6环境并在C++中调用Python脚本详解

Dylan
Dylan
发布时间:2026-10-15 | 3人浏览过
原创

本文详细介绍在Windows系统下使用VS2015和Anaconda Python3.6环境,在C++项目中调用Python脚本的配置步骤。涵盖VC++目录包含与库目录设置、链接器附加依赖项配置(Debug模式下python36_d.lib的处理)、Python路径修改以及常见DLL缺失问题的解决方法,并附带完整的C++调用示例代码。

一、环境设置

操作系统平台为Windows。

使用的集成开发环境为VS2015。

Python环境选用Anaconda自带的版本,不同版本的Anaconda内置的Python版本可能不同,此处使用的是Python3.6。这一步非常关键,如果尝试使用Anaconda创建的虚拟环境中的Python,可能会导致调用失败。

二、VS项目中设置

首先在Anaconda安装目录下找到include文件夹和libs文件夹,具体位置如图所示。

接着右键点击C++项目,选择“属性”,进入“VC++目录”选项卡。在“包含目录”中添加include文件夹的路径,在“库目录”中添加libs文件夹的路径。

然后点击“链接器”,进入“输入”选项卡,在“附加依赖项”中添加python36_d.lib的路径。

由于当前项目配置为Debug模式,因此需要添加python36_d.lib,而不是python36.lib。如果该文件不存在,可以直接复制python36.lib并重命名为python36_d.lib即可,具体操作如图所示。

三、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++项目的可执行文件所在目录中,然后才能正常运行程序。

三、可能会出现的问题

运行过程中可能会遇到找不到python36.dll的错误提示。解决方法是从Anaconda安装目录中找到该dll文件,并将其复制到C++项目的可执行文件所在目录中,具体操作如图所示。

总结

本文介绍到此结束,希望能为读者提供有效的帮助,同时也欢迎大家关注本站以获取更多技术内容。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表