我在C ++代码中嵌入了一个python解释器。它适用于高级方式:
PyRun_SimpleFileEx(fd, "/file_path/some_script.py", 1)
但是我需要将一些参数传递给python代码,所以我尝试使用python documentation中有关嵌入的一些代码。但是,XCode抱怨一些未定义的函数。我猜是我的
#include <Python/Python.h>
不添加正确的python版本,并且可能指向系统版本(2.7),该版本没有具有正确功能的标头。
我的链接器Flags是:
-lpython3.7m -ldl -framework CoreFoundation
我将Python include文件夹从框架添加到标头搜索路径:
../../Support/Lib/Python/include
以及从框架到库搜索路径的Python Lib文件夹:
../../Support/Lib/Python/lib
支持文件夹类似于解决方案中的文件夹。
XCode找不到的功能是PyUnicode_DecodeFSDefault()
和Py_FinalizeEx()
。
第一个是在unicodeobject.h
中定义的,它被Python.h
包含在右边,它必须位于我上面描述的include文件夹中。
我不确定我做错了什么,所以也许有人可以指出我正确的方向。提前致谢!
好像总是魔鬼在细节......我想我只需要直接传递完整路径,直到我需要的头文件的顶级目录。不搜索子目录。所以我的标题搜索路径是:
../../Support/Lib/Python/include/python3.7m
和我的图书馆搜索路径:
../../Support/Lib/Python/lib/python3.7 and then just include
包括我最后刚刚做了:
#include <Python.h>