C ++可执行文件继续寻找顺序入口点

时间:2017-06-19 16:14:23

标签: c++ mongodb c++11 msbuild mongo-cxx-driver

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

2 个答案:

答案 0 :(得分:1)

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

在这种情况下,.LIB文件将从../../installed_mongocxx/lib获取,但.DLL可能不是。{L}。该DLL将在运行时通过Windows规则找到。

答案 1 :(得分:1)

我注意到你最近一直在询问与mongocxx开发有关的一些问题。我们建议您在mongodb-user Google GroupJira project上提出问题,以便我们更方便地帮助您解决任何后续问题,而无需在多个地方。

(抱歉发布这个作为答案而不是评论; StackOverflow似乎对评论有一个长度限制,我不能把它放在一个)