C++调用python模块 10
问题如下,我要写一个C++程序运行python模块,用到一些C++/python的API,现在出现错误,不知道如何解决。py.cpp#include"python2.6/...
问题如下,我要写一个C++程序运行python模块,用到一些C++/python的API,现在出现错误,不知道如何解决。
py.cpp
#include"python2.6/Python.h"
#include<string>
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 展开
py.cpp
#include"python2.6/Python.h"
#include<string>
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 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询