c++加载python模块,但是PyImport_ImportModule老返回NULL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liulina603/article/details/79442021
问题描述: 

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

helloworld.py 内容如下:


展开阅读全文

没有更多推荐了,返回首页