Tôi đang cố gắng nhúng một số python vào dự án thú cưng của mình. Tôi đã làm giảm vấn đề của tôi để đoạn mã sau:(Python C API) PyRun_StringFlags thiếu các hàm dựng sẵn?
#include <Python.h>
#include "iostream"
int main(int argc, char *argv[])
{
Py_Initialize();
PyObject *globals = Py_BuildValue("{}");
PyObject *locals = Py_BuildValue("{}");
PyObject *string_result = PyRun_StringFlags(
"a=5\n"
"s='hello'\n"
"d=dict()\n"
,
Py_file_input, globals, locals, NULL);
if (PyErr_Occurred()) {PyErr_Print();PyErr_Clear();return 1;}
return 0;
}
(. Tôi biết tôi không dọn dẹp bất kỳ tài liệu tham khảo này là một ví dụ.)
nó có thể được biên soạn bởi
c++ $(python-config --includes) $(python-config --libs) test.cpp -o test
Nếu tôi chạy nó, tôi nhận được lỗi sau:
$ ./test
Traceback (most recent call last):
File "<string>", line 3, in <module>
NameError: name 'dict' is not defined
Có vẻ như các hàm dựng sẵn không được tải. Tôi cũng không thể import
bất kỳ thứ gì. Tôi nhận được rằng __import__
bị thiếu. Làm thế nào tôi có thể tải các mô-đun bị thiếu hoặc bất cứ điều gì tôi bị thiếu?
Cảm ơn.
Cảm ơn! 'PyEval_GetBuiltins' chính là thứ tôi cần. Tôi chỉ không biết cách tìm nó. – Simon