1.配置环境:
确定好C++运行环境是debug/release,一般在debug下的依赖项是python38_d.lib,在release下的依赖项是python38.lib,下载的python版本为python38,并没有python38_d.lib,可以直接使用python38.lib。
2.C++调用python程序:
#include <Windows.h>
#include <iostream>
#include <tchar.h>
#include <Python.h>
using namespace std;
int main()
{
//调用python函数
Py_Initialize(); //初始化
if (!Py_IsInitialized())
{
cout << "Python init fail" << endl;
return -1;
}
PyObject* pModule, *pFun;
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('C:/Users/Desktop/7.11_25/python_C++/python_C++/')");
pModule = PyImport_ImportModule("yolov5"); //pModule=NULL:python程序依赖的其他函数没有复制到该路径下
if (pModule==0)
{
cout << "Module not found" << endl;
}
else
{
pFun = PyObject_GetAttrString(pModule, "detect"); //要调用的函数名
cout << "可以调用到函数pFun!!!";
}
Py_Finalize(); //反初始化
return 0;
}
3.常见错误:
PyImport_ImportModule一直未能正确加载到模型:
1. 添加.py文件所在路径;
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('C:/Users/Desktop/7.11_25/python_C++/python_C++/')");
2. 调用python函数之前,要将函数调用的其他文件都放在vs的同级目录下。
调用python函数并传参,利用opencv获取图像的过程,Mat类型出错:
将出现问题的dll文件,放在vs同级目录下: