我有一个python模块,名为my_module,其中我有一个名为my_class的类,而我的_类有一个名为my_method的类方法。在
根据其他我已经看到的例子,我已经尝试了以下尝试从C++调用MyOy方法,但目前它们都返回null(实际上是其中之一个……)首先导入模块和类:
PyObject* my_module_name = PyString_FromString((char*)"my_module");
PyObject* myModule = PyImport_Import(my_module_name);
PyObject* my_class = PyObject_GetAttrString(myModule2, (char*)"my_class");
if (!my_class) std::cout << "my_class failed " << std::endl;
然后构建作为元组传入的参数:
^{pr2}$然后我尝试调用实际的方法
PyObject* my_method = PyObject_GetAttrString(my_class,(char*)"my_method");
if (!my_method) std::cout << "failed " << std::endl;
// This returns NULL
PyObject* result_1 = PyObject_CallMethod(my_class, (char*)"my_method", "ssiib", my_args);
if (!result_1) std::cout << "failed result_1 " << std::endl;
// This returns NULL
PyObject* result_2 = PyObject_CallMethod(my_class, (char*)"my_method", "ssiib", my_args);
if (!result_2) std::cout << "failed result_2 " << std::endl;
// This returns NULL
PyObject* result_3 = PyObject_CallMethod(my_class, (char*)"my_method", "ssiib", "first string", "second string", 0.0, 1.0);
if (!result_3) std::cout << "failed result_3 " << std::endl;
// This one segfaults
PyObject* result_4 = PyObject_CallMethodObjArgs(my_class, my_method, my_args);
if (!result_4) std::cout << "failed result_4 " << std::endl;
// This returns NULL
PyObject* result_5 = PyObject_CallObject(my_method, my_args);
if (!result_5) std::cout << "failed result_5" << std::endl;
但是它们返回NULL,或者在尝试编号为4的情况下,返回segfault。在
我不知道下一步该做什么,所以如果有任何帮助我将不胜感激。在
干杯, 杰克
目前没有回答
相关问题 更多 >
编程相关推荐