首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt on Mac: boost文件系统库-没有为体系结构x86_64找到符号

Qt on Mac: boost文件系统库-没有为体系结构x86_64找到符号
EN

Stack Overflow用户
提问于 2016-10-28 07:04:26
回答 1查看 643关注 0票数 2

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

代码语言:javascript
复制
Qt version: 5.6
Mac OSX 10.12
Xcode version: 8.0
Boost: 1.54

当我试图构建这个项目时,我会得到以下错误,

代码语言:javascript
复制
"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文件有以下语句

代码语言:javascript
复制
macx:INCLUDEPATH += ../../boost_1_54_0
macx:LIBPATH += ../../boost_1_54_0
macx:LIBS += -lboost_filesystem-mt -lboost_system-mt -larchive -lz

我在构建目录中有boost文件系统、boost-system、lib归档、libz的静态文件。

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-28 08:00:36

听起来你是在用libc++libstdc++的混合方式来构建。您需要使用标志-stdlib=stdc++编译您的产品。

虽然我建议将整个编译路径更改为只使用默认的stdlib (libc++),以避免出现这种情况

libstdc++有以下内容:

代码语言:javascript
复制
$ 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++有以下内容:

代码语言:javascript
复制
$ 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++交互悄然中断应用程序。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40299796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档