mongodb及mongoclient在win7下的编译和使用

1、导言

折腾mongodb几个小时终于有结果了。呃!现在就简单总结一下。

其实我的需求很简单,就是在C++代码中调用mongodb的库函数,也就是要得到mongoclient.lib。本来想直接下载个,可在网上也没找到,觉得重新编译也不麻烦,于是就下了源码编译。可下错了源码,编了半天也编不出来,晕!

其实就是参考了网友们的文章,在这里下载了源码mongodb-src-r2.6.3.zip。编译命令也很简单,大家都说直接输入:scons mongoclient.lib即可,可不断弹出这样的错误:

scons: *** Do not know how to make File target `mongoclient.lib‘ (C:\mongo-maste

r\mongoclient.lib). Stop.

结果不知道怎么发现mongoclient.lib在新版本中不再是target了,已经移到了另一个源码mongo-cxx-driver-legacy.zip中了,地址在这里。不过,在mongo-src中,像mongo,mongod还是直接可以编译成功的,貌似不需要boost库

2、准备工作

2.1 下载安装mongo-win32.msi

为了节约时间,我就直接下载了相关exe文件像mogo.exe,mogod.exe

2.2 依次安装python,scons,boost

详细信息可参考我给出的链接地址。我就强调一些我发现的:

2.2.1 有人说mongoclient只链接boost静态库,我发现不是这样,当指定--dynamic-windows,--sharedclient参数后,需要给出boost动态lib库目录,而非*-s.lib

2.2.2 当未指定指定--dynamic-windows,--sharedclient参数时,貌似不用给出boost库目录,我也不太确定,反正我是没给出像libboost_date_time-vc110-mt-s-1_53.lib等文件的路径

3、编译mongoclient

从vs2012命令行中进入mongo-cxx-driver-legacy目录,执行:

scons install-mongoclient --cpppath=boost头文件路径

结果在build\install\lib直接生成libmongoclient-s.lib,128M

当然也可添入--dynamic-windows,--sharedclient,--dbg等参数,可生成对应的动态库,包括调试版和发行版。详细说明可看这里。结果我的目录里有以下文件:

说实话,我是真没搞清楚这些文件的区别,我已经凌乱了……

4、测试

我不得不说,这一步也走得真悬,竟有两个重要步骤被我猜准了。。

本来代码很简单,就连接上mongod.exe进程开启的服务器就行,也不知道怎么回事,网友们都没有我说得那两个步骤,莫非是新版本更新的问题,抑或我忽视了一些东西?

代码如下:

#include <iostream>
#include <cstdlib>
#include <winsock2.h>

#include "mongo\client\dbclient.h"

using namespace std;

void run()
{
	mongo::DBClientConnection con;
	con.connect("127.0.0.1:27017");
}

int main()
{
	WSAData wsaData;
	if(WSAStartup(MAKEWORD(1,1),&wsaData) != 0)
	{
		return -1;
	} 

	try
	{
		run();
		cout << "conn ok" << endl;
	}
	catch (const mongo::DBException &e)
	{
		cout << "caught " << e.what() << endl;
	}
	getchar();
	return EXIT_SUCCESS;
}

在运行之前,不用说,肯定要添加boost和mongoclient的头文件和库文件。注意我添加的都是动态库Lib路径,应该是动态链接的,所以也需要将boost的dll路径和mongoclient-gd.dll路径添加进PATH中,且还要添加ws2_32.lib库,至于boost库和mongoclient库可直接写目录而不用写库名,因为有自动链接机制。

下面就说我的两个重大修改,只是相比于网友们的文件:

1、在dbclient.h头文件之前添加winsock2.h,因为在vs2012中如果不加会报错:"You must include the windows and windows sockets headers before dbclient.h"

2、在main函数开头,我添加了WSAStartup的5行代码,因为如果不添加,在某一个文件中的getAddr调用会异常:"WSAStartup() failed"

不能说常规代码错了,只能说由于各种原因,在这种情况下需要这么做才会编译运行正常。

运行就简单了,首先启动mogod -dbpath d:\data,默认端口在27017,然后启动上面的客户端,输出conn ok。Done !

5、参考网址

http://blog.csdn.net/mniwc/article/details/8590528

http://ppgunjack.iteye.com/blog/985904

http://database.51cto.com/art/201106/272526.htm

时间: 2024-03-07 17:09:28

mongodb及mongoclient在win7下的编译和使用的相关文章

win7下vs2010编译调试stl源代码

平台环境:windows 7 32位+VS2010+STL源代码5.2.1 STL在sourceforge下载,如果不可以下载,可以在csdn下载. 下载好源码后,首先解压到硬盘,我解压到D:\STL. 在vs2010 tools选择“Visual Studio 命令提示(VS2010)” 在cmd窗口,目录切换到刚刚解压源码的根目录, 输入configure -help查看编译选项 显示平台式XP,这里暂时不管. 输入configure msvc9配置环境 上面红框里面的内容不用去管. 之后切

win7下cmake编译opencv2.3.1生成opencv—createsamples.exe和opencv_haartrainingd.exe

第一步:下载安装cmake,之后进行默认安装就行,这步略过. 第二步:配置cmake ,使cmake找到opencv进行编译安装 第三步:之后找到安装后的文件夹,cmake通过cmakelist生成了很多工程,例如opencv_createsamples.vcproj,opencv_haartraining.vcproj.找到这两个工程打开后,直接进行编译,之后在opencv/bin/目录下会生成两个可执行文件,opencv-createsamples.exe和opencv_haartraini

MXNet在64位Win7下的编译安装

注:本文原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) 我笔记本配置比较低,想装个轻量级的MXNet试试,装完之后报错,不是有效的应用程序,找不到libinfo.py等等,同样的问题在github上也有很多人问,但是作者说也不知道问题在哪,自己折腾了两天,终于装好可以使用了,分享如下: 首先报一下我的机器环境:Win7-64bit,已装了WinPython-64bit-3.4.3.2.CUDA5.5.VS2013 update5. 一.获取M

win7下vs2010编译使用静态和动态库

知识补充: sqlite3.dll动态链接库,它允许程序共享执行特殊任务所必需的代码和其他资源. 动态的sqlite3.lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明.编译后只是将导出声明部分编译到宿主程序中,其生成的sqlite3.exe在运行时需要相应的dll文件支持 . 静态的sqlite3.lib将导出声明和实现都放在lib中.编译后所有代码都嵌入到宿主程序,其生成的sqlite3.exe可直接运行. 任务: 一.使用VS2010编译sqlite3,生成动态的sql

Zookeeper源码学习1:win7下Ant编译Zookeeper源码为Eclipse工程

1.什么是Ant??? Apache Ant? Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applic

Zookeeper源代码编译为Eclipseproject(win7下Ant编译)

为了深入学习ZooKeeper源代码,首先就想到将其导入到Eclispe中,所以要先将其编译为Eclispeproject. 1.什么是Ant??? Apache Ant? Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each

在win7 下编译MySQL源码

MySQL MySQL是一款优秀的开源数据库,在阿里.网易等各个互联网公司中有着广泛的应用.尽管各种NoSQL大行其道,但是关系型数据库依然必不可少. 作为一个新手,在Win7下用源码安装MySql数据库并不容易.我自己都折腾了好几天.今天把安装过程记录下来,其一是为了方便自己以后学习,其二则是分享过程,让学习者能够从我这篇文章中受益. 1. 编译环境及源码下载 编译环境:Visual Studio 2010 (Win7 32位) 编译工具: bison-2.4.1-setup.exe 下载地址

Win7下MongoDB的安装和使用

Win7下MongoDB的安装和使用 1.下载: http://www.mongodb.org/downloads 2.安装: 安装目录为 D:\mongodb\MongoDB 2.6 Standard 配置环境变量Path为 D:\mongodb\MongoDB 2.6 Standard\bin D:\mongodb\ 下建立一个data文件夹用于存放数据库文件 3.启动服务器: cmd下输入 mongod.exe --dbpath d:\mongodb\data 如果启动正常会看到类似如下的

win7下使用cygwin编译VLC

 win7下使用cygwin编译VLC http://kathy.blog.51cto.com/1168050/295460 2010-04-15 14:54:01 标签:编译 休闲 VLC 职场 win7 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://kathy.blog.51cto.com/1168050/295460 前几天使用MinGW+msys编译,错误百出 经过几天调,改还是没有成功,不是x264版本落后就是CA