PyBytes_AS_STRING意外输出

时间:2017-03-06 05:56:15

标签: python c++

我正在尝试用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

0 个答案:

没有答案