我正在尝试用c ++嵌入python。以下是用c ++编写的代码。代码应返回“hello_world”作为输出。但是PyBytes_AS_STRING没有返回“hello_world”。我正在使用python 3.5版本并尝试在visual studio中编译代码。
string myfunc(char * inp)
{
Py_Initialize();
PyObject *pName, *pModule, *pDict, *pFunc, *pArgs, *pValue1;
pName = PyUnicode_FromString("mod1");
pModule = PyImport_Import(pName);
pDict = PyModule_GetDict(pModule);
pFunc = PyDict_GetItemString(pDict, "func1");
pArgs = PyTuple_New(1);
pValue1 = PyUnicode_FromString(inp);
PyTuple_SetItem(pArgs, 0, pValue1);
PyObject* pResult = PyObject_CallObject(pFunc, pArgs);
if (pResult == NULL)
printf("Calling the python method failed.\n");
string result = PyBytes_AS_STRING(pResult);
cout << result << endl;
Py_Finalize();
return result;
}
int main()
{
cout << myfunc("hello_world") << endl;
}
mod1.py:
def func1(inp):
return inp