2013-03-03 3 views
3

Je veux développer une application Qt GUI avec MongoDB servant de base de données back-end. J'ai donc besoin d'utiliser le pilote MongoDB C ou le pilote C++.Comment utiliser le pilote MongoDB C pour Qt Creator?

À vrai dire, il est assez difficile de construire un pilote C++ sous Windows. Quand je fais "scons", il ne peut pas trouver de boost et j'ai installé boost. Je ne sais pas pourquoi. Donc, je choisis le pilote C MongoDB. Quand j'ai fait "scons", tout s'est bien passé et j'ai généré quatre fichiers (bson.lib, bson.dll, mongoc.lib, mongoc.dll). Mais je ne sais pas exactement comment utiliser ces libs et DLL pour le faire fonctionner dans Qt Creator.

Répondre

2

Je n'ai pas fait le pilote C, mais je suis en train de faire le C++ avec Qt Creator. Vous devez inclure les bibliothèques boost dans votre projet, et - pour la version du client MongoDB C++ que j'ai téléchargé de toute façon - elles doivent être les bibliothèques Boost 1.49, ni plus ni moins. Téléchargez-le et faites-le simplement construire toutes les bibliothèques, même si vous n'avez besoin que d'environ quatre d'entre elles pour cela. Ce qui suit est le code approprié de mon fichier Qt Creator .pro, et note que tout dans mon dossier C:/MongoDB est téléchargé à partir de la source MongoDB, ou au moins construit par des scons à partir de ce téléchargement direct.

INCLUDEPATH += C:/MongoDB/src \ 
C:/MongoDB/src/mongo/client \ 
C:/MongoDB/src/third_party/boost \ 
C:/MongoDB/src/third_party/boost/boost \ 
C:/MongoDB/src/mongo \ 
C:/MongoDB/src/third_party/boost/boost/algorithm \ 
C:/MongoDB/src/third_party/boost/boost/asio \ 
C:/MongoDB/src/third_party/boost/boost/bind \ 
C:/MongoDB/src/third_party/boost/boost/concept \ 
C:/MongoDB/src/third_party/boost/boost/config \ 
C:/MongoDB/src/third_party/boost/boost/container \ 
C:/MongoDB/src/third_party/boost/boost/date_time \ 
C:/MongoDB/src/third_party/boost/boost/detail \ 
C:/MongoDB/src/third_party/boost/boost/exception \ 
C:/MongoDB/src/third_party/boost/boost/filesystem \ 
C:/MongoDB/src/third_party/boost/boost/function \ 
C:/MongoDB/src/third_party/boost/boost/functional \ 
C:/MongoDB/src/third_party/boost/boost/integer \ 
C:/MongoDB/src/third_party/boost/boost/io \ 
C:/MongoDB/src/third_party/boost/boost/iterator \ 
C:/MongoDB/src/third_party/boost/boost/math \ 
C:/MongoDB/src/third_party/boost/boost/move \ 
C:/MongoDB/src/third_party/boost/boost/mpl  \ 
C:/MongoDB/src/third_party/boost/boost/numeric \ 
C:/MongoDB/src/third_party/boost/boost/optional \ 
C:/MongoDB/src/third_party/boost/boost/pending \ 
C:/MongoDB/src/third_party/boost/boost/preprocessor \ 
C:/MongoDB/src/third_party/boost/boost/program_options\ 
C:/MongoDB/src/third_party/boost/boost/random \ 
C:/MongoDB/src/third_party/boost/boost/range \ 
C:/MongoDB/src/third_party/boost/boost/regex \ 
C:/MongoDB/src/third_party/boost/boost/smart_ptr \ 
C:/MongoDB/src/third_party/boost/boost/spirit \ 
C:/MongoDB/src/third_party/boost/boost/system \ 
C:/MongoDB/src/third_party/boost/boost/test  \ 
C:/MongoDB/src/third_party/boost/boost/thread \ 
C:/MongoDB/src/third_party/boost/boost/tuple  \ 
C:/MongoDB/src/third_party/boost/boost/type_traits \ 
C:/MongoDB/src/third_party/boost/boost/typeof \ 
C:/MongoDB/src/third_party/boost/boost/units \ 
C:/MongoDB/src/third_party/boost/boost/unordered \ 
C:/MongoDB/src/third_party/boost/boost/utility \ 

DEFINES += _UNICODE \ 
    SYM_STATICLIB 

QMAKE_CFLAGS_RELEASE += /MT 
QMAKE_CXXFLAGS_RELEASE += /MT 
QMAKE_CFLAGS_DEBUG += /MTd 
QMAKE_CXXFLAGS_DEBUG += /MTd 

LIBS += -L$$PWD/../../../../../../MongoDB/src/third_party -lWS2_32 
LIBS += -L$$PWD/../../../../../../MongoDB/src/third_party -lDbgHelp 

CONFIG(debug, debug|release) { 
    LIBS += -LC:\MongoDB\build\win32\debug\client_build -lmongoclient 
    LIBS += -L$$PWD/../../../../../../Boost/1.49/bin.v2/libs/thread/build/msvc-10.0/debug/link-static/runtime-link-static/threading-multi/ -llibboost_thread-vc100-mt-sgd-1_49 
    LIBS += -L$$PWD/../../../../../../Boost/1.49/bin.v2/libs/date_time/build/msvc-10.0/debug/link-static/runtime-link-static/threading-multi/ -llibboost_date_time-vc100-mt-sgd-1_49 
    LIBS += -L$$PWD/../../../../../../Boost/1.49/bin.v2/libs/system/build/msvc-10.0/debug/link-static/runtime-link-static/ -llibboost_system-vc100-sgd-1_49 
    LIBS += -L$$PWD/../../../../../../Boost/1.49/bin.v2/libs/filesystem/build/msvc-10.0/debug/link-static/runtime-link-static/ -llibboost_filesystem-vc100-sgd-1_49 
} 

CONFIG(release, debug|release) { 
    LIBS += -LC:\MongoDB\build\win32\release\client_build -lmongoclient 
    LIBS += -L$$PWD/../../../../../../Boost/1.49/bin.v2/libs/thread/build/msvc-10.0/release/link-static/runtime-link-static/threading-multi/ -llibboost_thread-vc100-mt-s-1_49 
    LIBS += -L$$PWD/../../../../../../Boost/1.49/bin.v2/libs/date_time/build/msvc-10.0/release/link-static/runtime-link-static/threading-multi/ -llibboost_date_time-vc100-mt-s-1_49 
    LIBS += -L$$PWD/../../../../../../Boost/1.49/bin.v2/libs/system/build/msvc-10.0/release/link-static/runtime-link-static/ -llibboost_system-vc100-s-1_49 
    LIBS += -L$$PWD/../../../../../../Boost/1.49/bin.v2/libs/filesystem/build/msvc-10.0/release/link-static/runtime-link-static/ -llibboost_filesystem-vc100-s-1_49 
} 

Notez que Qt est connu pour se conduire mal lors de sa construction contre C++ statique runtimes, il est donc préférable de probablement suivre les conseils m'a donné here et envelopper le conducteur dans une dll non-Qt C++ qui est construit contre runtimes statique , puis utilisez cette DLL à l'intérieur de l'application principale Qt qui serait construit contre les temps d'exécution dynamiques. Notez également que j'ai dû copier manuellement le winsock et aider libs dans un dossier racine et les inclure manuellement parce que Qt Creator n'accepterait pas le chemin "Program Files (x86)" car il y avait des espaces dedans. Je réalise que ce n'est pas une réponse "Mongo C", mais vous avez mentionné que vous n'utilisez que le pilote C par frustration pour faire fonctionner le C++, alors j'ai pensé que je partagerais ce que je sais .