永发信息网

C++调用python模块

答案:2  悬赏:40  手机版
解决时间 2021-03-11 09:52
  • 提问者网友:泪痣哥哥
  • 2021-03-10 12:27
问题如下,我要写一个C++程序运行python模块,用到一些C++/python的API,现在出现错误,不知道如何解决。
py.cpp
#include"python2.6/Python.h"
#include
int main()
{
Py_Initialize();//使用python之前,要调用Py_Initialize();这个函数进行初始化
PyObject * pModule = NULL;
PyObject * pFunc = NULL;
pModule = PyImport_ImportModule("hello");//这里是要调用的文件名
PyObject * pClass= PyObject_GetAttrString(pModule, "TestClass");//这里是要调用的函数名
if(!pClass)
{
printf("cannot find class\n");
return -1;
}
PyObject * pTuple = PyTuple_New(1);
PyTuple_SetItem(pTuple, 0, Py_BuildValue("s", "jacky"));
PyObject * pObject = PyEval_CallObject(pClass, pTuple);
pFunc = PyObject_GetAttrString(pObject, "printName");//gdb调试发现错误出现在这一行
PyEval_CallObject(pFunc, NULL);//调用函数
Py_Finalize();//调用Py_Finalize,这个根Py_Initialize相对应的。
return 0;
}

hello.py
class TestClass:
def _init_(self, name):
self.name = name
def printName(self):
print self.name
最佳答案
  • 五星知识达人网友:患得患失的劫
  • 2021-03-10 13:19
这个问题比较复杂,有可能是你的python文件路径不对或者是使用的C编译器与编译module时使用的编译器不一致。一般py文件可以放在程序运行目录下或者PYTHON\lib目录下。
全部回答
  • 1楼网友:野味小生
  • 2021-03-10 14:01
没法实现。 原因: 你的tmp,只是class a中的一个函数fun内的临时变量 所以无法直接被外部调用。 并且只有fun函数执行时才存在,函数结束时,就不存在了。 关于变量的作用范围,你可以参考: 【整理】python中变量的作用域(variable scope) 想要
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯