我有一个带有以下源代码的C ++应用程序:
#include <cstdint>
#include <iostream>
#include <vector>
#include <bsoncxx/json.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/stdx.hpp>
#include <mongocxx/uri.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
using bsoncxx::builder::stream::close_array;
using bsoncxx::builder::stream::close_document;
using bsoncxx::builder::stream::document;
using bsoncxx::builder::stream::finalize;
using bsoncxx::builder::stream::open_array;
using bsoncxx::builder::stream::open_document;
int main(int argc, char** argv)
{
std::cout << "\nJust to be sure!" << std::endl;
// Making a connection to Mongo
mongocxx::instance instance{};
mongocxx::client client{mongocxx::uri{}};
// Access a database
mongocxx::database db = client["results"];
std::cout << "\ndone." << std::endl;
return 0;
}
我使用下面的CMakeLists.txt文件编译它:
cmake_minimum_required(VERSION 3.7)
project(testing)
set(APP_SOURCES
test.cpp
)
link_directories(../../installed_mongocxx/lib)
add_executable(testapp ${APP_SOURCES})
target_link_libraries(testapp mongocxx bsoncxx)
target_include_directories(testapp PUBLIC
../../installed_mongocxx/include/mongocxx/v_noabi
../../installed_mongocxx/include/bsoncxx/v_noabi
E:/Softwares/Libraries/Boost/boost_1_64_0
)
install(TARGETS testapp
DESTINATION bin)
我在Windows 10 64bit上使用MSBuild编译程序时没有错误,运行时会出现此错误;
The ordinal 4694 could not be located in the dynamic library libmongoc-1.0.dll
C ++代码或CMakeLists.txt有什么问题可以解释错误吗?
答案 0 :(得分:1)
这不大可能。问题是您使用什么.LIB文件链接DLL。构建DLL时,还会创建一个小的.LIB文件。这基本上只是一个目录。如果将一个构建中的.LIB文件与另一个构建中的.DLL混合,则可能会遇到不兼容问题。
在这种情况下,.LIB文件将从../../installed_mongocxx/lib
获取,但.DLL可能不是。{L}。该DLL将在运行时通过Windows规则找到。
答案 1 :(得分:1)
我注意到你最近一直在询问与mongocxx开发有关的一些问题。我们建议您在mongodb-user Google Group或Jira project上提出问题,以便我们更方便地帮助您解决任何后续问题,而无需在多个地方。
(抱歉发布这个作为答案而不是评论; StackOverflow似乎对评论有一个长度限制,我不能把它放在一个)