Я пытаюсь интегрировать базу данных mon go в мое приложение проекта C ++. Я собрал драйвер mon go db cxx в соответствии с инструкциями, приведенными здесь по этой ссылке http://mongocxx.org/mongocxx-v3/installation/
Теперь у меня есть код драйвера mongocxx для обеих станций: stati c и общих библиотек , Я связываю библиотеки stati c для моего приложения C ++ и скопировал папку драйвера mongocxx в мой проект. Я пытался написать Cmake для mongocxx и bsoncxx для связи с моим C ++ приложением, но где-то это не удалось. Структура моего проекта и содержимое cmake следующие:
Структура папок
mongo_db_driver
include
bsoncxx
v_noabi
mongocxx
v_noabi
lib
bsoncxx-static.lib
mongocxx-static.lib
main.cpp
CMakeLists.txt
Findmongocxx.cmake
SET ( LOCATE_mongocxx ${CMAKE_CURRENT_LIST_DIR} )
find_path ( mongocxx_headers mongocxx/client.hpp
mongocxx/instance.hpp
PATH_SUFFIXES include/mongocxx/v_noabi
PATHS ${LOCATE_mongocxx}
)
find_library ( mongocxx_library
NAMES mongocxx-static
PATH_SUFFIXES lib
PATHS ${LOCATE_mongocxx}
)
Findbsoncxx.cmake
SET ( LOCATE_bsoncxx ${CMAKE_CURRENT_LIST_DIR} )
find_path ( bsoncxx_headers bsoncxx/builder/stream/document.hpp
bsoncxx/json.hpp
PATH_SUFFIXES include/bsoncxx/v_noabi
PATHS ${LOCATE_bsoncxx}
)
find_library ( bsoncxx_library
NAMES bsoncxx-static
PATH_SUFFIXES lib
PATHS ${LOCATE_bsoncxx}
)
И мой CMakeLists.txt, как показано ниже
cmake_minimum_required(VERSION 3.15)
project(enabler_app)
set(CMAKE_CXX_STANDARD 20)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/mongo_db_driver)
set(EXECUTABLES
main.cpp
)
add_executable(enabler_app ${EXECUTABLES}
)
find_package(mongocxx REQUIRED)
include_directories(${mongocxx_headers})
target_link_libraries(${PROJECT_NAME} ${mongocxx_library} )
find_package(bsoncxx REQUIRED)
include_directories(${bsoncxx_headers})
target_link_libraries(${PROJECT_NAME} ${bsoncxx_library} )
CMakeLists.txt, загружен без каких-либо ошибок, но когда я пытаюсь создать свое приложение, он выдает undefined_reference для всех методов, доступных в драйвере mongocxx. например, ниже несколько
main.cpp:10: undefined reference to `__imp__ZN8mongocxx7v_noabi8instanceC1Ev'
main.cpp:11: undefined reference to `__imp__ZN8mongocxx7v_noabi3uri13k_default_uriB5cxx11E'
My main. cpp содержит код, который доступен в приведенных выше инструкциях на сайте MongoDB, а также
#include <iostream>
#include <bsoncxx/builder/stream/document.hpp>
#include <bsoncxx/json.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
int main(int, char**) {
mongocxx::instance inst{};
mongocxx::client conn{mongocxx::uri{}};
bsoncxx::builder::stream::document document{};
auto collection = conn["testdb"]["testcollection"];
document << "hello" << "world";
collection.insert_one(document.view());
auto cursor = collection.find({});
for (auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
}