5
C에서 Python 인터프리터를 사용하는 방법을 알아 내려고하고 있는데 PyEval_EvalCode
과 문제가 있습니다. 기본적으로, 임의의 Python 코드 문자열을 받아서 컴파일하고 실행 한 다음 결과를 출력하는 C 함수를 작성하고 있습니다.Python C API : PyEval_EvalCode 사용
문제점은 결과를 인쇄 할 때 표현이 분명히 None
이 아니더라도 항상 None
이됩니다. 여기
"5 + 5"
이 함수를 호출 시도
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);
}
, 그것은 None
표시. PyEval_EvalCode
을 잘못 사용하고 있습니까?