問題描述:
調用 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;
}