c++中调用python里面的函数问题
python3.1
如:test.py
def myfun(x,y):
print('x+y=',x+y)
然后C++中:////////////////////
//////////////////////编译运行没问题:python3.1的。
Py_Initialize();
PyObject *pm=NULL;
PyObject *pFun=NULL;
PyObject *pFun2;
PyObject *para=NULL;
PyObject *pname=NULL;
PyObject *pdic=NULL;
//pname=PyString_FromString("test");
pm=PyImport_ImportModule("test");
if(!pm)
{
printf("cannot find test.py");
getch();
return -1;
}
pdic=PyModule_GetDict(pm);
pFun=PyDict_GetItemString(pdic,"myfun");/////////////////监控发现pFun=NULL////////
//pFun2=PyObject_GetAttrString(pm,"show");////////////
int a;
// pFunc=PyDict_GetItemString(pDict,"scan");
if(!pFun||!PyCallable_Check(pFun)) //////////////此处已经调用
{
printf("无法找到函数myfun()"); ////////////运行到此跳出此信息,没有找到函数
getch();
return -1;
}
para=PyTuple_New(2);
PyTuple_SetItem(para,0,Py_BuildValue("I",55));
PyTuple_SetItem(para,1,Py_BuildValue("I",12));
PyEval_CallObject(pFun,para);
PyRun_SimpleString("print('fuck aaaaaaaaaa')");
printf("c++ fun:%d",a);
Py_Finalize();
如:test.py
def myfun(x,y):
print('x+y=',x+y)
然后C++中:////////////////////
//////////////////////编译运行没问题:python3.1的。
Py_Initialize();
PyObject *pm=NULL;
PyObject *pFun=NULL;
PyObject *pFun2;
PyObject *para=NULL;
PyObject *pname=NULL;
PyObject *pdic=NULL;
//pname=PyString_FromString("test");
pm=PyImport_ImportModule("test");
if(!pm)
{
printf("cannot find test.py");
getch();
return -1;
}
pdic=PyModule_GetDict(pm);
pFun=PyDict_GetItemString(pdic,"myfun");/////////////////监控发现pFun=NULL////////
//pFun2=PyObject_GetAttrString(pm,"show");////////////
int a;
// pFunc=PyDict_GetItemString(pDict,"scan");
if(!pFun||!PyCallable_Check(pFun)) //////////////此处已经调用
{
printf("无法找到函数myfun()"); ////////////运行到此跳出此信息,没有找到函数
getch();
return -1;
}
para=PyTuple_New(2);
PyTuple_SetItem(para,0,Py_BuildValue("I",55));
PyTuple_SetItem(para,1,Py_BuildValue("I",12));
PyEval_CallObject(pFun,para);
PyRun_SimpleString("print('fuck aaaaaaaaaa')");
printf("c++ fun:%d",a);
Py_Finalize();
...全文
相关推荐
python调用c++传递数组的实例
本文将深入探讨如何在Python中调用C++函数并传递数组作为参数。首先,Python使用`ctypes`库来与C/C++动态链接库进行交互。
C++调用python脚本
**兼容性问题**:确保所使用的Python版本与C++编译器和运行时环境相匹配。2. **异常处理**:在调用Python函数时可能出现的各种错误需要妥善处理,如类型不匹配、函数未找到等。3.
python调用C/C++ demo
Python调用C++:通过`ctypes`和`extern "C"`封装由于C++的名称修饰(name mangling),直接使用`ctypes`调用C++函数会遇到问题。
linux中使用boost.python调用c++动态库的方法
为了解决这个问题,我们可以使用Boost.Python库。Boost.Python允许我们直接暴露C++的对象和函数给Python,它会处理名称修饰和类型转换。
Python调用C++,通过Pybind11制作Python接口
在示例中,创建了一个名为example.cpp的C++源文件,该文件定义了一个简单的加法函数,并将其暴露给Python。


