私は基本的に次の質問と同じことをしようとしていPyObject_Print
ますが、「toupper()at0x776e0226」のエラーについて不平を言う呼び出しで実行時エラーが発生します
Python C API:PyEval_EvalCodeの使用
私のコードは次のとおりです。
int callExecFunction(const char* evalStr)
{
PyCodeObject* code = (PyCodeObject*)Py_CompileString(evalStr, "pyscript", Py_eval_input);
PyObject* global_dict = PyModule_GetDict(pModule);
PyObject* local_dict = PyDict_New();
PyObject* obj = PyEval_EvalCode(code, global_dict, local_dict);
PyObject* result = PyObject_Str(obj);
PyObject_Print(result, stdout, 0);
}
evalStrは"setCurrentFileDir()"
、pModuleがエラーなしでスクリプトから以前に初期化され、次のコードとして機能していました:http: //docs.python.org/2/extending/embedding.html#pure-embedding。
そして、ロードされたモジュールの中には次の機能があります:
def setCurrentFileDir():
print "setCurrentFileDir"
return "5"
eval関数呼び出しで何を見逃したか間違ったことをしましたか。PythonAPIを介して関数setCurrentFileDirを「直接」呼び出すことはできないことに注意してください。evalを使用する必要があります。