Los novatos necesitan consejos sobre cómo compilar e instalar el código fuente del controlador
(1) Descargue python2.7, use x86_32 bit, porque scons solo tiene un instalador de 32 bits disponible
(2) Descargue scons2.3.0; /p >
(3) Instale python y scons, y escriba C:\Python27\Scripts en PATH;
(4) Descargue e instale pywin32. Si desea compilar en paralelo, es. Se recomienda instalar pywin32 (scons -j)
2. Instale la biblioteca boost (versión 1.49).
Descomprima y haga doble clic en bootstrap.bat para generar bjam.exe, cd al directorio c:\boost (renombrado a boost_1_49) para compilar boost.
Comando de compilación: C: \ boostgt;bjam variante=lanzamiento -- con-sistema de archivos --con-a través -- con-sistema de archivos -- con-sistema de archivos -- con-a través -- con-sistema de archivos con-sistema de archivos --con-hilo --con-fecha_hora - -with-program_options threading=multi toolset=msvc-10.0 link=static runtime-link=static Address-model=32
Esta es una versión compilada utilizando el entorno VS2010. Después de la compilación, se generará la carpeta C:\boost\stage\lib, con seis bibliotecas debajo:
Si desea compilarlo en una versión de depuración, puede usar el siguiente comando: bjam variante = depurar -- con-sistema de archivos --con-hilo --con-fecha_hora --con-opciones_de_programa threading=multi toolset=msvc-10.0 enlace=tiempo de ejecución estático-enlace= dirección-modelo estático=32
Una vez completada la compilación, se generará la carpeta C:\boost\stage\lib, con 10 bibliotecas y dlls a continuación:
El siguiente es el documento original de MongoDB para compilar la biblioteca boost:
Cuando use bjam, MongoDB Hope
Use variante=debug al depurar la compilación, use variante=liberación al publicar la compilación
threading=multi
Utilice link=static runtime-link cuando publique la compilación =static
Utilice adress-model=64 para 64 bits. link=static runtime-link=static, boost debe compilarse en una biblioteca estática, porque mongodb solo se vinculará a la biblioteca estática de boost
se requiereaddress-model=64 en el entorno Win7 64, si no agregado, se producirá un error de enlace al compilar el cliente c de mongodb.
3. Descargue el código fuente mongo2.4.6 http://www.mongodb.org/downloads descarga del sitio web oficial
Compile Mongoclient.lib
símbolo del sistema cmd , cd al directorio donde se encuentra el archivo descomprimido, por ejemplo, lo puse en la unidad E, E:\mongodb-src-r2.4.6, ingrese el comando: dirección-modelo = 64.
scons --dd --32 mongoclient.lib // Cree la biblioteca de controladores del cliente C
Agregue --64 o --32 para obtener versiones de 64 y 32 bits respectivamente. - y versiones de 32 bits.
Compila y construye mongoclient_build en mongodb\build\win32\32\32\dd\client_build\.mongoclient.lib.
4. Programa de prueba
Mongodb viene con ejemplos, use VS2010 para abrir simple_client_demo.vcxproj en E:\mongodb-src-r2.4.6\src\mongo\client\examples. Compile, le pedirá que genere simple_client_demo.sln y guárdelo.
Utilice el modo de depuración, configure el entorno del proyecto: abra las propiedades del proyecto -gt; configure el directorio VC en Propiedades de configuración, agregue C:\boost a la ruta del archivo de encabezado, agregue la biblioteca de boost a la biblioteca Lib. ruta y la biblioteca final del cliente mongodb:
C:\boost\stage\lib
E:\mongodb-src-r2.4.6build\win32\32\32dd\client_build
E:\boost\stage\lib
E:\boost\stage\lib
C:\boost\stage\lib
C:\boost \stage\lib
E:\mongodb-src-r2.4.6 (build\win32\32\32dd\client_build)
Ingrese el C/C generación de código en el directorio VC, configure la biblioteca de tiempo de ejecución en depuración multiproceso (/MTd)
Ingrese la entrada en el vinculador, establezca dependencias adicionales, agregue ws2_32.lib, psapi.lib, Dbghelp.lib , mongoclient.lib
p>Copie los archivos error_codes.h y error_codes.cpp generados en el directorio E:\mongodb-src-r2.4.6\build\win32\32\dd mongo\base a E :\mongodb-src-r2.4.6\src\mongo\base directorio.
OK, compila y ejecuta.
5. Resolución de problemas
error LNK2038: no coincide con '_MSC_VER': el valor '1700' no coincide con el valor '1600' en error_codes.obj
1gt.mongoclient_d.lib(dbclient.obj): error LNK2038: no coincide con '_MSC_VER': el valor '1700' no coincide con el valor '1600' en error_codes.obj
1gt;mongoclient_d.lib (assert_util.obj): error LNK2038: no coincide con '_MSC_VER': el valor '1700' no coincide con el valor '1600' en error_codes.obj
1gt; mongoclient_d.lib(jsobj.obj) : error LNK2038: discrepancia detectada para '_MSC_VER': el valor '1700' no coincide con el valor '1600' en error_codes.obj
1gt; mongoclient_d.lib(status.obj): error LNK2038: discrepancia detectada; para '_MSC_VER': el valor '1700' no coincide con el valor '1600' en error_codes.obj
1gt; mongoclient_d.lib(mutexdebugger.obj): error LNK2038: no coincide con '_MSC_VER': valor '1700' no coincide con el valor '1600' en error_codes.obj
La versión de VS no coincide, la biblioteca se compila y genera en una versión más avanzada, y cuando se usa, se usa en una versión anterior, de ahí el error de discrepancia. Por ejemplo, estoy compilando en el entorno VS2010 SP1 y VS2012, pero lo uso en VS2010, por lo que el problema anterior ocurre al compilar.
1gt;mongoclient.lib(stacktrace.obj): error LNK2001: símbolo externo no resuelto __imp_SymCleanup
1gt;mongoclient.lib(stacktrace.obj): error LNK2001: símbolo externo no resuelto __imp_SymGetModuleInfo64
1gt;mongoclient.lib(stacktrace.obj): error LNK2001: símbolo externo no resuelto __imp_SymInitialize
1gt;mongoclient.lib(stacktrace.obj): error LNK2001: símbolo externo no resuelto __imp_StackWalk64
1gt; mongoclient.lib(stacktrace.obj): error LNK2001: símbolo externo no resuelto __imp_SymFromAddr
Agregue Dbg en Add Dbghelp.lib para agregar Dbg a las dependencias del proyecto
p>
Si tiene otras preguntas, verifique si el compilador que tiene, la versión compilada de la biblioteca boost y la versión mongoclient.lib son consistentes.