gpt4 book ai didi

android - 使用 QtCreator 使用 BOOST_ALL_NO_LIB 构建 android 时未定义对 boost::system::system_category 的引用

转载 作者:行者123 更新时间:2023-11-30 03:47:00 24 4
gpt4 key购买 nike

Boost 并不真正关心 android 开发,所以我决定与其拼命尝试获取 android 的 boost 静态库,不如在我的程序中构建 boost 源代码。

我为我的构建添加了这个定义:

DEFINES += BOOST_ALL_NO_LIB

然后我添加了库和 .cpp 文件:

 boost155/libs/system/src/error_code.cpp \
boost155/libs/thread/src/pthread/once.cpp \
boost155/libs/thread/src/pthread/once_atomic.cpp \
boost155/libs/thread/src/pthread/thread.cpp \
boost155/libs/thread/src/future.cpp \
boost155/libs/thread/src/tss_null.cpp \
boost155/libs/iostreams/src/file_descriptor.cpp \
boost155/libs/iostreams/src/gzip.cpp \
boost155/libs/iostreams/src/mapped_file.cpp \
boost155/libs/iostreams/src/zlib.cpp \
boost155/libs/chrono/src/chrono.cpp \
boost155/libs/chrono/src/process_cpu_clocks.cpp \
boost155/libs/chrono/src/thread_clock.cpp \
boost155/libs/date_time/src/gregorian/date_generators.cpp \
boost155/libs/date_time/src/gregorian/greg_month.cpp \
boost155/libs/date_time/src/gregorian/greg_weekday.cpp \
boost155/libs/date_time/src/gregorian/gregorian_types.cpp \
boost155/libs/date_time/src/posix_time/posix_time_types.cpp
boost155/libs/filesystem/src/codecvt_error_category.cpp \
boost155/libs/filesystem/src/operations.cpp \
boost155/libs/filesystem/src/path.cpp \
boost155/libs/filesystem/src/path_traits.cpp \
boost155/libs/filesystem/src/portability.cpp \
boost155/libs/filesystem/src/unique_path.cpp \
boost155/libs/filesystem/src/utf8_codecvt_facet.cpp \

头文件的获取方式与普通 PC 构建方式相同:

 INCLUDEPATH += ../libs/boost155/

该项目编译没有错误,但在链接期间我遇到链接器错误:

./libs/boost155/boost/system/error_code.hpp:323: error: undefined reference to 'boost::system::system_category()'
../libs/boost155/boost/thread/exceptions.hpp:51: error: undefined reference to 'boost::system::system_category()'
../libs/boost155/boost/asio/error.hpp:224: error: undefined reference to 'boost::system::system_category()'
../libs/boost155/boost/system/error_code.hpp:222: error: undefined reference to 'boost::system::generic_category()'
../libs/boost155/boost/system/error_code.hpp:223: error: undefined reference to 'boost::system::generic_category()'
../libs/boost155/boost/system/error_code.hpp:224: error: undefined reference to 'boost::system::system_category()'
../libs/boost155/boost/chrono/detail/inlined/posix/chrono.hpp:59: error: undefined reference to 'boost::system::throws'
../libs/boost155/boost/chrono/detail/inlined/posix/chrono.hpp:113: error: undefined reference to 'boost::system::throws'
../libs/boost155/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp:118: error: undefined reference to 'boost::system::throws'
../libs/boost155/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp:194: error: undefined reference to 'boost::system::throws'

我缺少什么 .cpp

最佳答案

BOOST_ALL_NO_LIB 只是告诉 header 不要链接 (#pragma lib(...))。如果您使用它们,当然这会导致无法解决的外部问题。

我建议您应该考虑链接到静态库,而不是手动选择一些 cpp 文件。

出乎意料,也许您已经添加了 cpp 文件,但它们实际上并未参与构建(您检查过了吗?)。

否则,也许您一直在修补并定义了 BOOST_ERROR_CODE_HEADER_ONLY 但不是在所有情况下。在那种情况下,您将得到 undefined symbol 甚至编译和链接 error_code.cpp。原因是因为该文件有条件地编译了某些部分。

关于android - 使用 QtCreator 使用 BOOST_ALL_NO_LIB 构建 android 时未定义对 boost::system::system_category 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33870838/

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