我在C ++代码中嵌入了python解释器。对于以下方面的高级方法,它工作正常:
PyRun_SimpleFileEx(fd, "/file_path/some_script.py", 1)
但是我需要将一些参数传递给python代码,因此我尝试着从python documentation中获取有关嵌入的一些代码。但是,XCode抱怨一些未定义的功能。我的猜测是我的
#include <Python/Python.h>
不添加正确的python版本,并且可能指向的系统版本(2.7)没有带有正确功能的标头。
我的链接器标志是:
-lpython3.7m -ldl -framework CoreFoundation
我将框架中的Python include文件夹添加到标题搜索路径:
../../Support/Lib/Python/include
以及从框架到库搜索路径的Python Lib文件夹:
../../Support/Lib/Python/lib
support文件夹类似于解决方案中指向的文件夹。
XCode找不到的功能是PyUnicode_DecodeFSDefault()
和Py_FinalizeEx()
。
第一个是在unicodeobject.h
中定义的,如上所述,它必须包含在必须包含在include文件夹中的位置Python.h
的右边。
我不确定自己在做什么错,所以也许有人可以指出我正确的方向。预先感谢!
答案 0 :(得分:0)
好吧,就像魔鬼一直在细节中一样... 我发现我只需要直接传递完整路径,直到我需要的头文件的顶层目录即可。不搜索子目录。所以我的标题搜索路径是:
../../Support/Lib/Python/include/python3.7m
和我的图书馆搜索路径:
../../Support/Lib/Python/lib/python3.7 and then just include
包括我终于可以了:
#include <Python.h>