qt 5.4/clang:未定义的符号为架构x86_64 (std::istream::gcount())

qt 5.4/clang: Undefined symbols for architecture x86_64 (std::istream::gcount())

本文关键字:x86 std gcount istream clang 未定义 符号为 qt      更新时间:2023-10-16

我试图包括一个内部库到我的应用程序,但我得到以下链接错误。图书馆找到了。该库使用与应用程序完全相同的标志进行编译。这在windows上工作得很好,但在osx上就麻烦了。对我来说,它看起来像找不到图书馆?

我还添加了以下标志到qmake,但没有帮助:

CONFIG += c++11
LIBS += -stdlib=libc++
QMAKE_CXXFLAGS += -stdlib=libc++
QMAKE_CXXFLAGS += -std=c++11

错误信息:

目标:x86_64-apple-darwin14.4.0线程模型:posix"/应用程序/xcode/内容/开发/工具链/XcodeDefault.xctoolchain/usr/bin/ld"-demangle -dynamic -arch x86_64 -headerpad_max_install_names -macosx_version_min 10.7.0应用程序/内容/MacOS/CryptoTest -lcrt1.10.6。0 -L/Users/eDS/dev/ed/CryptoTest -syslibroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/sdk/MacOSX10.10.sdk-rpath/Users/eDS/Qt/5.4/clang_64/lib obj/main。o obj/主窗口。o obj/moc_mainwindow。0 -lc++ -lcryptopp -llicensing -framework QtSvg . 0-framework QtWidgets -framework QtGui -framework QtCore -framework diskarration -framework IOKit -framework QtQuickWidgets -frameworkQtQuick -framework QtQml -framework QtNetwork -frameworkQtPrintSupport -framework QtWebKitWidgets -framework QtWebKit-lc++ -lSystem/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.1.0/lib/darwin/libclang_rt.osx.a- f/用户/eDS/Qt/5.4/clang_64/lib
架构x86_64:
未定义符号"std::istream::gcount() const",引用自:

CryptoPP::operator>>(std::istream&, CryptoPP::Integer&) inlibcryptopp.a (integer.o)"std::string::data() const",被引用来自:Licensing::RsaVerifySignature(std::string, std::string) in liblicensing.a(Licensing .o)

似乎clang仍然有一些问题与c++ 11,看看这个线程,它是旧的,但我认为仍然是实际的:

https://forum.qt.io/topic/23989/solved-make-qtcreator-qmake-and-clang3-2-work-with-c-11/27

你应该在pro文件中使用这样的内容:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
LIBS += -stdlib=libc++
QMAKE_CXXFLAGS += -stdlib=libc++
QMAKE_CXXFLAGS += -std=c++11
QMAKE_CXXFLAGS += -mmacosx-version-min=10.7
QMAKE_LFLAGS += -mmacosx-version-min=10.7

事实证明该库不是用c+11标志编译的。添加以下内容后,一切正常

LIBS += -stdlib=libc++
CONFIG += c++11
QMAKE_CXXFLAGS += -stdlib=libc++
QMAKE_CXXFLAGS += -std=c++11