问题描述:
调用 PyImport_ImportModule加载python老是返回NULL,如下所示:“没有找到符号”
解决办法:
import某块返回值为0的是因为:VC工程的当前工作目录和.py文件所在目录不一致导致的。
当.py文件和工程不在统一目录时,若要import .py文件,只需要在import之前增加python的搜索目录就可以了:
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('py所在目录')");
#include "stdafx.h"
#include <Python.h>
#include <stdio.h>
#include <iostream>
using namespace std; //导入std名字空间
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Starting Test..." << endl;
Py_Initialize();//使用python之前,要调用Py_Initialize();这个函数进行初始化
PyObject * pModule = NULL;//声明变量
PyObject * pFunc = NULL;//声明变量
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('D:/2018program/VCPythonFile/VCPythonFile/')");
cout << "------------"<<endl;
pModule = PyImport_ImportModule("helloworld");//这里是要调用的Python文件名
cout << pModule << endl;
pFunc = PyObject_GetAttrString(pModule, "printHello"); //这里是要调用的函数名
PyEval_CallObject(pFunc, NULL); //调用函数,NULL表示参数为空
Py_Finalize();//调用Py_Finalize,这个和Py_Initialize相对应的.
return 1;
}