2017-04-01 15 views
0

私はMongoDBのを使用しています私のプロジェクトに取り組んでいます。公式ガイドに従ってmongocxxをインストールしました。コマンドラインからコードをコンパイルするときに動作します。今私のQtプロジェクトで使ってみたいのですが、.proファイルに必要なライブラリをすべて追加しましたが、リンカエラーのためコードをコンパイルできません。コードは最も単純です:QtとMongocxxリンカエラー

#include <mongocxx/client.hpp> 
#include <mongocxx/instance.hpp> 
void connectToMongo() { 
mongocxx::instance abc{}; 
} 

.PRO:

CONFIG += c++11 

QMAKE_CXXFLAGS += -I/usr/local/include/mongocxx/v_noabi -I/usr/local/include/libmongoc-1.0 \ 
    -I/usr/local/include/bsoncxx/v_noabi -I/usr/local/include/libbson-1.0 \ 
    -L/usr/local/lib -lmongocxx -lbsoncxx 

SOURCES += main.cpp 
... 

しかし、残念ながら、リンカのエラーがあります:

Undefined symbols for architecture x86_64: 
    "mongocxx::v_noabi::instance::instance()", referenced from: 
     connectToMongo() in main.o 
    "mongocxx::v_noabi::instance::~instance()", referenced from: 
     connectToMongo() in main.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [hw.app/Contents/MacOS/hw] Error 1 
18:38:01: The process "/usr/bin/make" exited with code 2. 
Error while building/deploying project hw (kit: Desktop Qt 5.8.0 clang 64bit) 

ステップを実行すると makeの文字列を "作ります" :

Starting: "/usr/bin/make" 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.12 -I/usr/local/include/mongocxx/v_noabi -I/usr/local/include/libmongoc-1.0 -I/usr/local/include/bsoncxx/v_noabi -I/usr/local/include/libbson-1.0 -L/usr/local/lib -lmongocxx -lbsoncxx -g -std=gnu++1z -Wall -W -fPIC -DQT_QML_DEBUG -DQT_WEBENGINEWIDGETS_LIB -DQT_WEBENGINECORE_LIB -DQT_QUICKCONTROLS2_LIB -DQT_QUICK_LIB -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_WEBCHANNEL_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_POSITIONING_LIB -DQT_CORE_LIB -I../hw -I. -I../Qt/5.8/clang_64/lib/QtWebEngineWidgets.framework/Headers -I../Qt/5.8/clang_64/lib/QtWebEngineCore.framework/Headers -I../Qt/5.8/clang_64/lib/QtQuickControls2.framework/Headers -I../Qt/5.8/clang_64/lib/QtQuick.framework/Headers -I../Qt/5.8/clang_64/lib/QtPrintSupport.framework/Headers -I../Qt/5.8/clang_64/lib/QtWidgets.framework/Headers -I../Qt/5.8/clang_64/lib/QtGui.framework/Headers -I../Qt/5.8/clang_64/lib/QtWebChannel.framework/Headers -I../Qt/5.8/clang_64/lib/QtQml.framework/Headers -I../Qt/5.8/clang_64/lib/QtNetwork.framework/Headers -I../Qt/5.8/clang_64/lib/QtPositioning.framework/Headers -I../Qt/5.8/clang_64/lib/QtCore.framework/Headers -I. -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AGL.framework/Headers -I../Qt/5.8/clang_64/mkspecs/macx-clang -F/Users/alexey/Qt/5.8/clang_64/lib -o main.o ../hw/main.cpp 

clang: warning: -lmongocxx: 'linker' input unused 
clang: warning: -lbsoncxx: 'linker' input unused 
clang: warning: argument unused during compilation: '-L/usr/local/lib' 

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -headerpad_max_install_names -stdlib=libc++ -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.12 -Wl,-rpath,/Users/alexey/Qt/5.8/clang_64/lib -o hw.app/Contents/MacOS/hw main.o qrc_qml.o moc_filldatacollections.o -F/Users/alexey/Qt/5.8/clang_64/lib -framework QtWebEngineWidgets -framework QtWebEngineCore -framework QtQuick -framework QtQml -framework QtNetwork -framework QtCore -framework DiskArbitration -framework IOKit -framework QtGui -framework QtWebChannel -framework QtPositioning -framework QtPrintSupport -framework QtWidgets -framework QtQuickControls2 -framework OpenGL -framework AGL 

私は既にさまざまなトピックでこのような問題の決定を見つけました。 http://widequestion.com/question/msgasserted-linker-errors-on-mongo-c-drivers-on-macosx-10-10-3-yosemite/

私の場合はうまくいきません。私のOS Xは10.11です。 この問題を解決するには、私に助けてください。

答えて

0
clang: warning: -lmongocxx: 'linker' input unused 
clang: warning: -lbsoncxx: 'linker' input unused 
clang: warning: argument unused during compilation: '-L/usr/local/lib' 

あなたは、彼らが(彼らは未使用だったとき)建物main.oを適用して実行可能ファイルを構築するリンク時に適用されなかったのでCXXFLAGSとしてあなたリンカのフラグを設定しているように見えます。

私はQtを扱っていませんが、すばやく検索するとLIBSに設定されているはずです。 declaring other librariesのドキュメントをご覧ください。