2017-06-19 29 views
0

私は、以下のソースコードをC++アプリケーション持って探し続ける: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

***はCに何か問題はあります++コードやCMakeLists.txtはエラーの説明になりますか?***いいえ、これはdll confilctです。 1つの例は、インポートライブラリとは異なるdllを使用することです。 – drescherjm

+0

@drescherjm、私は同時にライブラリをコンパイルするので、私は可能性としてそれを見ていない。 – Amani

+0

あなたのシステムに 'libmongoc-1.0.dll'の別のコピーがインストールされている可能性はありますか? – drescherjm

答えて

1

これはそうではありません。問題は、あなたがDLLをリンクするために使用している.LIBファイルです。 DLLをビルドすると、小さな.LIBファイルも作成されます。これは基本的に単なる目次です。 1つのビルドの.LIBファイルと別のビルドの.DLLファイルを混在させると、非互換性が生じる可能性があります。

この場合、.LIBファイルは../../installed_mongocxx/libから取得されますが、.DLLはそうではない可能性があります。 DLLは、実行時にWindowsルールによって検出されます。

+0

私は今すべてをきれいにしています。 – Amani

+0

私はすべてのものをきれいにしました。 cmdから実行可能ファイルを実行しても何も起こりません。 WinDbg(64x)から実行可能ファイルを開くときに同じエラーメッセージが表示されました。 – Amani

+0

@Amani:それは、2番目のケースで別のDLLを見つけることを示唆しています。 [DLL検索ルール](https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx) – MSalters

1

最近、mongocxxを使って開発することに関連した多くの質問をしてきました。 mongodb-user Google GroupまたはJira projectに関する質問をすることをお勧めします。これにより、複数の場所で会話することなく、フォローアップの質問にお応えしやすくなります。

(答えではなく、コメントとしてこれを掲示するための謝罪、StackOverflowのは、コメントの長さの制限を持っているようだ、と私は1つでこれに合うことができませんでした)

+0

本当に私のプロジェクトでMongo C++を使いたいと思っています。 – Amani

関連する問題