2013-11-04 2 views
3

mongodb의 C++ 드라이버를 사용하여 프로그램을 작성하는 방법을 알려주십시오. 나쁜 영어에 대한 불길이 없습니다.mongodb의 C++ 드라이버를 사용하여 프로그램을 빌드하려면 어떻게해야합니까?

내 환경

  • 는 Windows7 64 비트
  • 비주얼 스튜디오 궁극적 인 2012 (64 릴리스 대상 프로젝트)

나는 다음과 같은 단계를 수행했습니다.

  • 필자는 Ptython 2.7.2, Python for Windows extensions 및 Scons 2.3.0을 설치했습니다.
  • 부스트 1.54.0을 설치했습니다. 나는 'boostrap'과 'b2 -a --build-type = complete -address-model = 64 -link = static -runtime-link = static'을 수행했습니다.
  • mongodb-linux-x86_64-v2를 다운로드합니다. 4-latest.tgz.
  • 다음 텍스트를 SConstruct에 추가했습니다.

    env.Append(CPPPATH=['C:\\boost\\boost_1_54_0']) 
    env.Append(LIBPATH=['C:\\boost\\boost_1_54_0\\stage\\lib']) 
    env.Append(CPPDEFINES=["_UNICODE"]) 
    env.Append(CPPDEFINES=["UNICODE"]) 
    
  • 'scons mongoclient'를 수행했습니다.

  • Visual Studio C++ 프로젝트를 만들었습니다.
  • 프로젝트에서 '출시'및 'x64'를 설정했습니다.
  • 속성 페이지/구성 등록 정보/C C++/일반/추가 디렉토리에 'C : \ boost \ boost_1_54_0'과 'C : \ mongo \ mongo-cxx-driver-v2.4 \ src'를 설정합니다. 등록 정보 페이지에서
  • 은/구성 속성/링커/일반/추가 라이브러리 디렉토리, 나는 'C를 : \ 부스트 \ boost_1_54_0의 \ 무대 \ lib 디렉토리'설정 'C : \ 몽고 \ 몽고-CXX-드라이버 V2.4을' .
  • 속성 페이지/구성 속성/링커/입력/추가 종속성에서 'mongoclient.lib', 'ws2_32.lib'및 'psapi.lib'를 설정합니다.
  • 속성 페이지/구성 속성/링커/입력/특정 기본 라이브러리 무시에서 'msvcprt.lib'및 'LIBCMT.lib'을 설정합니다.
  • 속성 페이지/구성 속성/C C++/Preprosessor/전 처리기 정의에서 '_CRT_SECURE_NO_WARNINGS'를 설정합니다.
  • 속성 페이지/구성 속성/C C++/코드 생성/런타임 라이브러리에서 '멀티 스레드 (/ MT)'를 설정합니다.

드라이버를 사용하여 프로그램을 만들었습니다. 그러나 프로그램 빌드 솔루션이 실패했습니다.

1>mongoclient.lib(stringutils.obj) : error LNK2001: unresolved external symbol __security_check_cookie 
1>mongoclient.lib(initializer_dependency_graph.obj) : error LNK2001: unresolved external symbol __security_check_cookie 
1>mongoclient.lib(initializer.obj) : error LNK2001: unresolved external symbol __security_check_cookie 
.... 
fatal error LNK1120: 154 unresolved externals 

당신이 단계에 대한 이상한 것을 지적하면 나에게 도움이 될 경우

.

감사합니다.

+1

가져? Windows에서의 C++ 드라이버 컴파일 프로세스는 끔찍한 일입니다. – WiredPrairie

+1

의견을 보내 주셔서 감사합니다. Visual Studio에서 치명적인 오류를 반환했습니다. 그리고 텍스트에 오류의 일부를 추가했습니다. 고맙습니다. – hizz

답변

9

이 솔루션은 다음과 같은 특징을 가진 기계에 성공

MongoDB를 C++ 드라이버를 빌드하는 방법을 :

  1. 윈도우 XP SP3 32 비트
  2. 비주얼 스튜디오 익스프레스 2010 (10 VC)

D : \ MongoDBcplusplusClient를 작업 디렉토리로 사용했습니다. equisites).

프로세스 :

  • 1 단계

다운로드 MongoDB를 C++ 드라이버 :

https://github.com/mongodb/mongo-cxx-driver

당신은 힘내를 사용하여 복제를 만들거나 .ZIP로 다운로드 할 수 있습니다 파일 (두 번째 작업). mongo-cxx-driver-legacy.zip과 같은 파일을 얻을 수 있습니다. 작업 디렉토리 안의 mongo-cxx-driver-legacy 폴더로 압축을 풉니 다.

  • 2 단계

다운로드 부스트 미리 만들어진 윈도우 바이너리. 주의! 특정 버전의 Boost를 사용해야합니다. 제 경우 1.52 버전이 트릭을했습니다. 당신은 여기에서 다운로드 할 수 있습니다 :

http://boost.teeks99.com/

은 내가 boost_1_52_0-vc32-bin.exe 자동 압축 풀림 EXE를 다운로드했습니다. 그것을 작업 디렉토리에 놓고 실행하십시오. 이 폴더 부스트 바이너리 (.LIB 및 .dll 파일)를 포함합니다 (lib32 같은)

  • 3 단계

다운로드 부스트 소스 코드 (.H 파일)을 생성합니다. 물론 이러한 2 단계에서와 동일한 버전이어야한다 여기에서 그들을 다운로드 :

http://sourceforge.net/projects/boost/files/boost/1.52.0/

당신은 boost_1_52_0 폴더에서 추출 할 수있는 파일 boost_1_52_0.zip을 얻을 것이다.

  • 4 단계

다운로드 파이썬. 이 예제에서는 2.7 버전을 다운로드했습니다.여기에서 9 구체적으로 윈도우 86 MSI 설치 :

http://www.scons.org/download.php

에서 Windows를 다운로드 : 5 단계

이 다운로드 SCons는 여기에서 https://www.python.org/downloads/release/python-279/

  • installer (scons-2.3.4-setup.exe) 및 i nstalled Python 디렉토리 (내 경우에는 C : \ Python27)에서 Scons. 여기에서

    • 6 단계

    다운로드 msinttypes :

    https://code.google.com/p/msinttypes/

      (당신은 드라이버를 사용하는 프로젝트에이 헤더 파일을 포함한다)
    • 7 단계

    시작 -> 실행 ...으로 이동하고 실행 상자에 cmd를 입력하십시오. 열린 명령 프롬프트 창에서 1 단계에서 mongo 드라이버를 추출한 폴더로 이동하십시오. 제 경우에는 다음을 입력했습니다 : cd D : \ D : \ MongoDBcplusplusClient \ mongo-cxx-driver-legacy \ mongo-cxx-driver- 기존

    • 8 단계

    는 SCons는을 사용하여 드라이버를 빌드합니다. 디렉토리에서 당신은 7 단계 쓰기에서 탐색 :

    SCons는

    --prefix = D : \ MongoDBcplusplusClient은 \ 몽고-CXX-드라이버 레거시 \ 몽고-CXX 드라이버 레거시

    --cpppath = D : \ MongoDBcplusplusClient \ boost_1_52_0 \ boost_1_52_0

    --libpath = D : \ MongoDBcplusplusClient \ lib32

    --win 버전 - 분 = XPSP3는

    를 설치하고 Enter를 누르십시오.

    --prefix 플래그는 드라이버의 lib 디렉토리 파일이 생성됩니다되는 대상 디렉토리, --cpppath가 부스트 헤더 파일이 위치하는 폴더를 지정하고 --libpath를 지정합니다 Boost .lib 파일 경로. 물론 경로를 자신의 것으로 변경해야합니다.libmongoclient-s.lib이라는 파일은 --prefix/lib 경로에 생성됩니다. 당신은 당신이 다음 명령을 사용합니다 디버깅이 가능 드라이버를 구축하려면 다음

    SCons는

    --prefix = D : \ MongoDBcplusplusClient \ 몽고-CXX-드라이버 레거시 \의 몽고-CXX를 - 드라이버 레거시

    --cpppath = D : \ MongoDBcplusplusClient \ boost_1_52_0 \ boost_1_52_0

    --libpath = D : \ MongoDBcp lusplusClient \는 lib32

    --win 버전 - 분 = XPSP3

    --dbg =에 libmongoclient - sgd.lib라는 이름의 파일이에 생성됩니다

    설치 --prefix/lib 경로.

    • 9 단계

    Windows 탐색기를 사용하여 MongoDB C++ 드라이버가 설치되어있는 폴더로 이동에서 (내 경우에는이 D이었다 하위 폴더 lib 디렉토리로 이동 : \ MongoDBcplusplusClient \ 몽고-CXX - 드라이버 레거시 \ 몽고-CXX-드라이버 레거시 \ lib 디렉토리) 및 mongoclient.liblibmongoclient - sgd.libmongoclient - gd.lib에 파일 libmongoclient-s.lib 이름을 바꿉니다.

    • 10 단계

    열기 비주얼 스튜디오 2010 익스프레스하고 MongoDB를 C++ 드라이버를 사용하고자하는 프로젝트를 엽니 다. 종속성을 지정해야합니다. 솔루션 탐색기 (왼쪽 열)에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 속성을 누릅니다.

    A) 부스트 헤더 파일 디렉토리 (내 경우 D에 : C/C++ → 일반 및 추가에 가서는 디렉토리가 추가 포함 \ MongoDBcplusplusClient \ boost_1_52_0 \ boost_1_52_0)

    B) MongoDB를 C++ 드라이버 헤더 파일 디렉토리 (내 경우 D의 : \ MongoDBcplusplusClient \ 몽고-CXX-드라이버 레거시 \ 몽고-CXX 드라이버 기존 \ 포함)

    C) Cstdint 유형 내 경우 (파일을 디렉토리 헤더 : \ MongoDBcplusplusClient \ msinttypes-R26)

    • 11 단계

    이동 링커 → 일반 및 추가 라이브러리 디렉토리에 추가 :

    A) 파일 디렉토리를 lib 디렉토리 부스트 (내 경우 D : \ MongoDBcplusplusClient \ lib32)

    b) MongoDB C++ 드라이버 .lib 파일 디렉토리 (내 경우 D : \ MongoDBcplusplusClient \ mongo-cxx-driver-legacy \ mongo-cxx-driver-legacy \ lib)

    이 단계를 수행하면 드라이버를 사용하는 프로젝트가 릴리스 및 디버그 구성 모두에 성공적으로 구축되었습니다.

+0

편집 된 링크가 작동 할 때 링크가 올바르게 작동 할 수 있도록 편집되었습니다. –

3

간단한 솔루션 사용 vcpkg.

다운로드 vcpkg는 git에서 언급 한 지침을 따르십시오. https://github.com/Microsoft/vcpkg

1 단계 C : \ vcpkg> \ vcpkg 검색 MongoDB를

당신은 MongoDB를 위해 C에 기록 된

몽고-C-드라이버 1.6.2-1 클라이언트 라이브러리 같은 것을 볼 수 있습니다. .

mongo-cxx-driver 3.1.1-1 MongoDB C++ 드라이버.

2 단계 C는 :. \ vcpkg 검색

STAP 3에게 .... 커피

다음 잡아 컵 몽고-CXX 드라이버

C를 설치하여 MongoDB : \ vcpkg> \. vcpkg 설치 통합

완료 ..

Prer equisites :

Windows 10, 8.1, 또는

비주얼 스튜디오 2017 (7) 또는 Visual Studio 2015 업데이트 3

은 단순히 오류가 무엇입니까

#include <cstdint> 
    #include <iostream> 
    #include <vector> 
    #include <bsoncxx/json.hpp> 
    #include <mongocxx/client.hpp> 
    #include <mongocxx/stdx.hpp> 
    #include <mongocxx/uri.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; 
관련 문제