2015-07-20 108 views
1

我想包括一个内部库到我的应用程序,但我得到以下链接错误。图书馆被找到。该库与应用程序完全相同的标志进行编译。这在Windows上工作正常,但给OSX的麻烦。对我来说,它看起来像无法找到STL库?qt 5.4 /铿锵:架构x86_64(std :: istream :: gcount())未定义的符号

我还增加了以下标志qmake的,但是没有帮助:

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

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

错误消息:

目标:x86_64的 - 苹果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/Crypt oTest -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 -framework QtQml -framework QtNetwork -framework QtPrintSupport框架QtWebKitWidgets框架QtWebKit 框架Qt3D框架QtOpenGL框架QtXml框架QtSql框架OpenGL框架AGL -lC++ -lSystem//../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 ::运算>>(标准:: istream的&,CryptoPP ::整数&)在 libcryptopp.a(integer.o)“std :: string :: data()const”,引用为 from: liblicensing.a中的Licensing :: RsaVerifySignature(std :: string,std :: string)(licensing.o )

回答

1

看来,铿锵仍然有一些与C + + 11的问题,看到这个线程,它是旧的,但我认为仍然是实际的:

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

你应该使用类似的东西在亲文件:

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 

这将是一个铿锵的解决方法。

1

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

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