gpt4 book ai didi

c++ - Pybind11错误 undefined reference `Py_GetVersion'

转载 作者:行者123 更新时间:2023-11-28 04:31:41 25 4
gpt4 key购买 nike

我正在努力让 Pybind 11 正常工作,但遇到了困难。我试着用这个编译我的 .cpp 文件:

c++  -Wall -std=c++11 -fPIC `python3 -m --includes` -I ~/Documents/Single_electron/pybind11/include single_e.cpp -o single_e `python-config --includes`

但是会出现一大堆错误,从这个列表开始:

 single_e.cpp :(.text+0xaa): undefined reference to `Py_GetVersion'
single_e.cpp :(.text+0x104): undefined reference to `PyExc_ImportError'
single_e.cpp :(.text+0x123): undefined reference to `PyErr_Format'
single_e.cpp :(.text+0x1b2): undefined reference to `PyExc_ImportError'
single_e.cpp :(.text+0x1c0): undefined reference to `PyErr_SetString'
single_e.cpp :(.text+0x1f9): undefined reference to `PyExc_ImportError'
single_e.cpp :(.text+0x207): undefined reference to `PyErr_SetString'

有没有人对我应该如何解决这个问题有任何建议?

最佳答案

你拉 python 包括不止一种方式

python3 -m --includes

python-config --includes

第一个甚至不应该运行(你是说 python3-config --includes 吗?),无论如何,你需要决定你是想要 python2 还是 python3,并且只使用一个。

其次,您只处理了 python 的包含目录。您仍然需要告诉编译器如何链接库,这是您问题的核心。这是对 python-config 的另一个调用:python-config --ldflags

最后,您最好使用 --cflags 来获取包含目录,因为这还会设置一堆其他标志,以便您的编译代码符合 python 的约定。例如,这包括 -fPIC

所以,总结一下:

c++ -std=c++11 `python-config --cflags` -I ~/Documents/Single_electron/pybind11/include single_e.cpp -o single_e `python-config --ldflags`

当然,用正确的名称替换您的 python-config,例如 python3-config,如果那确实是您的目标。

关于c++ - Pybind11错误 undefined reference `Py_GetVersion',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52728091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com