永发信息网

C++调用python模块

答案:2  悬赏:40  手机版
解决时间 2021-03-11 09:52
问题如下,我要写一个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
最佳答案
这个问题比较复杂,有可能是你的python文件路径不对或者是使用的C编译器与编译module时使用的编译器不一致。一般py文件可以放在程序运行目录下或者PYTHON\lib目录下。
全部回答
没法实现。 原因: 你的tmp,只是class a中的一个函数fun内的临时变量 所以无法直接被外部调用。 并且只有fun函数执行时才存在,函数结束时,就不存在了。 关于变量的作用范围,你可以参考: 【整理】python中变量的作用域(variable scope) 想要
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
硬盘自检completion code : 15是什么意思
如果是先天性的心脏病,一般多大年龄被发现呢
光柱3CM左右的激光笔在哪能买到?在淘宝有卖光
小兰(女)点了一下兄弟姐妹的人数,结果兄弟比
秦始皇的首创都有那些?
120G硬盘4G内存版苹果Mac air装WIN7,无法键
今天突然发现,OneNote这个软件怎么不能卸载
考研对专业有什么要求?
谭氏推拿理疗会所在哪里啊,我有事要去这个地
红花可以代替藏红花吗?
怎样剪辑FLV格式视频
我每次打开百度贴吧的帖子,总会弹出一个提示
南宁中通林发轮胎经营部这个地址在什么地方,
汽车空调的制冷量说的是显热还是潜热
魔法门7在翡翠岛上,无修改的情况下,怎么杀
推荐资讯
好口福多味面馆在哪里啊,我有事要去这个地方
小米4哪个版本最省电
草莓属于水果还是蔬菜
早餐起什么名字好听
1、首先找到并打开“Tencent\QQ\Users\”下跟
北京奥运会升起开幕式升起的三面旗帜是哪些?
中国林蛙酒是哪里生产的?
昂达魔剑H55+X3450,超频求助
TcL液晶电视机型号L48E5000E开机一分钟出现图
图中甲、乙、丙分别代表的大洲或大洋依次是AA
海贼王里的?艾尼路怎么死的
周大福东大街百伦新宸珠宝店在哪里啊,我有事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?