gpt4 book ai didi

c++ - 在 MacOS 10.9 (Mavericks) 上构建 Boost.Python 应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:53 25 4
gpt4 key购买 nike

我升级到 Mavericks,现在在进行大量故障排除后无法构建我的应用程序。

在链接期间,我收到错误

Undefined symbols for architecture x86_64:
"boost::python::objects::function_object(boost::python::objects::py_function const&, std::pair<boost::python::detail::keyword const*, boost::python::detail::keyword const*> const&)
.
.
.
"boost::python::objects::register_dynamic_id_aux(boost::python::type_info, std::pair<void*, boost::python::type_info> (*)(void*))"

我正在使用来自 macports 的 g++,特别是 g++-mp-4.4。 Clang 不适合我的项目,因为我的项目依赖于 OpenMP,而 OpenMP 目前与 Clang 不兼容。

我没有使用过 C++11 运行时,但是来自 macports 的 Boost.Python 库(我在链接过程中使用的库)链接到了它。

otool -L libboost_python-mt.dylib
libboost_python-mt.dylib:
/opt/local/lib/libboost_python-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

这是我问题的根源吗?使用 Clang 成功编译了我的部分项目(并跨越了这个链接错误阶段),但正如我提到的,我需要 OpenMP。

值得注意的是,运行:

nm  libboost_python-mt.dylib | c++filt | grep boost::python::objects::function_object

输出

0000000000013d60 T boost::python::objects::function_object(boost::python::objects::py_function const&)
0000000000013d00 T boost::python::objects::function_object(boost::python::objects::py_function const&, std::__1::pair<boost::python::detail::keyword const*, boost::python::detail::keyword const*> const&)

具有 std::__1 前缀,与 undefined symbol 错误中的预期不匹配......

最佳答案

该解决方案是通过安装和链接未使用 c++11 编译的 Boost 版本来实现的。 Macports 提供的 Boost 版本显然是用 C++11 构建的 Boost.Python,尽管我专门将 Macports 编译器设置为 g++-mp-4.4,它不应该用 C++11 构建。 .

请注意,在撰写本文时,很难通过 Macports 安装使用 g++ 编译的 Boost 库,我最终从源代码安装了 Boost 库。

关于c++ - 在 MacOS 10.9 (Mavericks) 上构建 Boost.Python 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20134223/

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