我正在嘗試使用Python/C API來運行返回字符串的Python函數。我想將返回的字符串存儲到一個C++變量,但我無法讓它工作。我正在使用Python 3,而且似乎PyString_FromString()
方法不再有效。這裏是我的代碼:Python 3:Python/C API字符串問題
int main(int argc, char *argv[])
{
PyObject *pName, *pModule, *pDict, *pFunc, *pValue;
Py_Initialize();
pName = PyUnicode_FromString("ocr");
pModule = PyImport_Import(pName);
pDict = PyModule_GetDict(pModule);
pFunc = PyDict_GetItemString(pDict, "get_text");
pValue = PyUnicode_FromString("ocr_noise.png");
pValue = PyObject_CallObject(pFunc, pValue);
std::string result = PyUnicode_FromObject(pValue);
Py_DECREF(pModule);
Py_DECREF(pName);
Py_DECREF(pValue);
Py_Finalize();
return 0;
}
蟒蛇文件名爲ocr.py
,我試圖調用函數被調用get_text(value)
。我試圖通過"ocr_noise.png"
作爲參數。任何想法我應該做什麼?
編輯2:我不需要在代碼中使用std :: string。我還可以使用什麼來存儲函數返回的字符串?
你是什麼意思「看起來像'PyUnicode_FromString()'方法不再工作了?」?你是否遇到異常?段錯誤?還有別的嗎? –
我的意思是PyString_FromString()。我的錯。 – MPorto
在Python 3中沒有'PyString_FromString'這樣的東西。 –