【发布时间】:2014-04-24 15:08:06
【问题描述】:
我正在尝试使用此函数在我的一个 c++ 程序中从 python 加载一个函数
char * pyFunction(void)
{
char *my_result = 0;
PyObject *module = 0;
PyObject *result = 0;
PyObject *module_dict = 0;
PyObject *func = 0;
PyObject *pArgs = 0;
module = PyImport_ImportModule("testPython");
if (module == 0)
{
PyErr_Print();
printf("Couldn't find python module");
}
module_dict = PyModule_GetDict(module);
func = PyDict_GetItemString(module_dict, "helloWorld");
result = PyEval_CallObject(func, NULL);
//my_result = PyString_AsString(result);
my_result = strdup(my_result);
return my_result;
}
我应该使用什么来代替 PyString_AsString?
【问题讨论】:
-
可能是
PyBytes_AsString。如果这是一个 unicode 字符串,那么您应该首先决定要使用哪种编码,然后使用PyUnicode_Encode对其进行编码 -
你也应该使用
PyObject_CallObject(func, NULL)而不是PyEval_CallObject()。
标签: python c++ python-module