如何在嵌入C ++时链接正确的python版本?

问题描述 投票:0回答:1

我在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文件夹中。

我不确定我做错了什么,所以也许有人可以指出我正确的方向。提前致谢!

python c++ macos python-3.7 python-embedding
1个回答
0
投票

好像总是魔鬼在细节......我想我只需要直接传递完整路径,直到我需要的头文件的顶级目录。不搜索子目录。所以我的标题搜索路径是:

../../Support/Lib/Python/include/python3.7m

和我的图书馆搜索路径:

../../Support/Lib/Python/lib/python3.7 and then just include

包括我最后刚刚做了:

#include <Python.h>
© www.soinside.com 2019 - 2024. All rights reserved.