【问题标题】:qt 5.4/clang: Undefined symbols for architecture x86_64 (std::istream::gcount())qt 5.4/clang:架构 x86_64 的未定义符号(std::istream::gcount())
【发布时间】:2015-10-09 14:01:02
【问题描述】:

我正在尝试在我的应用程序中包含一个内部库,但出现以下链接错误。找到这些库。该库使用与应用程序完全相同的标志进行编译。这在 Windows 上运行良好,但在 osx 中会出现问题。对我来说,它似乎找不到 stl 库?

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

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

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

错误信息:

目标:x86_64-apple-darwin14.4.0 线程模型:posix “/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld” -demangle -dynamic -arch x86_64 -headerpad_max_install_names -macosx_version_min 10.7.0 -o CryptoTest.app/Contents/MacOS/CryptoTest -lcrt1.10.6.o -L/Users/eDS/dev/ed/CryptoTest -syslibroot /Applications/Xcode。 app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -rpath /Users/eDS/Qt/5.4/clang_64/lib obj/main.o obj/mainwindow.o obj/moc_mainwindow.o -lc++ -lcryptopp -llicensing -framework QtSvg -framework QtWidgets -framework QtGui -framework QtCore -framework DiskArbitration -framework IOKit -framework QtQuickWidgets -framework QtQuick - 框架 QtQml - 框架 QtNetwork - 框架 QtPrintSupport - 框架 QtWebKitWidgets - 框架 QtWebKit -framework Qt3D -framework QtOpenGL -framework QtXml -framework QtSql -framework OpenGL -framework AGL -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/ 6.1.0/lib/darwin/libclang_rt.osx.a -F/Users/eDS/Qt/5.4/clang_64/lib
架构 x86_64 的未定义符号:
“std::istream::gcount() const”,引用自:

CryptoPP::operator>>(std::istream&, CryptoPP::Integer&) 在 libcryptopp.a(integer.o) "std::string::data() const",引用 从: liblicensing.a(licensing.o) 中的 Licensing::RsaVerifySignature(std::string, std::string)

【问题讨论】:

    标签: c++ macos qt c++11 clang


    【解决方案1】:

    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
    

    这将是 clang 的一种解决方法。

    【讨论】:

      【解决方案2】:

      原来这个库不是用 c+11 标志编译的。添加后一切正常

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-08
        • 1970-01-01
        相关资源
        最近更新 更多