c++加載python模塊,但是PyImport_ImportModule老返回NULL

問題描述: 

調用 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;
}


 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章