0

我有一个带有以下源代码的 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 有什么问题可以解释错误吗?

4

2 回答 2

1

我注意到您最近一直在问一些与使用 mongocxx 开发相关的问题,这些问题似乎都相关。我鼓励您在我们的mongodb-user Google Group或我们的Jira 项目上提问,这将使我们更容易帮助您解决您可能遇到的任何后续问题,而无需在多个地方进行对话。

(很抱歉将其作为答案而不是评论发布;StackOverflow 似乎对评论有长度限制,我无法将其合二为一)

于 2017-06-22T21:29:20.520 回答
1

这不太可能。问题是您用于链接 DLL 的 .LIB 文件。构建 DLL 时,也会创建一个小的 .LIB 文件。这基本上只是一个目录。如果您将一个版本的 .LIB 文件与另一个版本的 .DLL 混合,您可能会遇到不兼容问题。

在这种情况下,.LIB 文件将从 .DLL 中获取../../installed_mongocxx/lib,但 .DLL 可能不是。DLL 将在运行时根据 Windows 规则找到。

于 2017-06-19T17:36:48.717 回答