5
私はCのPythonインタプリタを使用する方法を理解しようとしていますが、私はPyEval_EvalCode
と問題があります。基本的には、Pythonコードの任意の文字列を取り込み、コンパイルして実行し、結果を出力するC関数を作成しています。Python C API:PyEval_EvalCodeを使用して
問題は、私が結果をプリントアウトすると、式が明らかにNone
と評価されなくても、常にNone
になるということです。ここ
が(エラーチェック及び明確化のために除去参照カウントを有する)コードである:
void eval(const char* s)
{
PyCodeObject* code = (PyCodeObject*) Py_CompileString(s, "test", Py_file_input);
PyObject* main_module = PyImport_AddModule("__main__");
PyObject* global_dict = PyModule_GetDict(main_module);
PyObject* local_dict = PyDict_New();
PyObject* obj = PyEval_EvalCode(code, global_dict, local_dict);
PyObject* result = PyObject_Str(obj);
PyObject_Print(result, stdout, 0);
}
Iは入力として"5 + 5"
と、この関数を呼び出す試み、それがNone
を示しました。 PyEval_EvalCode
を間違って使用していますか?