gpt4 book ai didi

c++ - Mac 上的 Qt : boost filesystem library - symbols not found for architecture x86_64

转载 作者:搜寻专家 更新时间:2023-10-31 00:56:07 34 4
gpt4 key购买 nike

我正在尝试运行一个依赖于 boost 文件系统库的 Qt 项目。

Qt version: 5.6
Mac OSX 10.12
Xcode version: 8.0
Boost: 1.54

当我尝试构建项目时,出现以下错误,

"typeinfo for std::codecvt<wchar_t, char, __mbstate_t>", referenced from:
typeinfo for boost::filesystem::detail::utf8_codecvt_facet in libboost_filesystem-mt.a(utf8_codecvt_facet.o)

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我看过许多有关堆栈溢出的线程(123),但它们似乎都无法解决我的问题。

我的 .pro 文件有以下语句

macx:INCLUDEPATH += ../../boost_1_54_0
macx:LIBPATH += ../../boost_1_54_0
macx:LIBS += -lboost_filesystem-mt -lboost_system-mt -larchive -lz

[我的build目录下有boost-filesystem、boost-system、lib archive、libz的静态文件]

我该如何解决这个问题?

最佳答案

听起来您正在使用 libc++libstdc++ 的混合构建。 猜测您需要使用标记-stdlib=stdc++ 编译您的产品。

Although I would advise changing your entire compile path to just use the default stdlib (libc++), to avoid just this situation

libstdc++ 具有以下内容:

$ nm /usr/lib/libstdc++.6.0.9.dylib | c++filt | grep 'std::codecvt<wchar_t, char, __mbstate_t>' | grep typeinfo
0000000000051710 S typeinfo for std::codecvt<wchar_t, char, __mbstate_t>
000000000004b760 S typeinfo name for std::codecvt<wchar_t, char, __mbstate_t>

libc++ 具有以下内容:

$ nm /usr/lib/libc++.dylib | c++filt | grep '::codecvt<wchar_t' | grep typeinfo
0000000000057ff0 S typeinfo for std::__1::codecvt<wchar_t, char, __mbstate_t>
0000000000052070 S typeinfo name for std::__1::codecvt<wchar_t, char, __mbstate_t>

请注意中间的 ::__1::,它旨在防止 libc++libstdc++ 交互无声地破坏您的应用。

关于c++ - Mac 上的 Qt : boost filesystem library - symbols not found for architecture x86_64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40299796/

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