您的位置:首页 > 编程语言 > C语言/C++

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

2018-03-05 09:41 645 查看
问题描述: 
调用 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 内容如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: