这个东西真是耗费了很多时间和精力,中间出现好多错误,把英文的mongodb和boost仔细看了好几遍,可算是弄出来了。

http://docs.mongodb.org/manual/reference/connection-string/

http://www.boost.org/doc/libs/1_54_0/more/getting_started/windows.html

一、scons,python,SpiderMonkey, boost与mongodb的关系

借鉴http://blog.csdn.net/mniwc/article/details/8590528
1.scons
scons是一个Python写的自动化构建工具,同linux的make工具功能相似。与之关联的SConstruct文件也即类似make工具的makefile文件,
描述了编译和链接的内容和方式。在这里就是用scons这个工具来编译生成mongoclient.lib的(而不是用vs)。
2.python
Python是一种面向对象、直译式计算机程序设计语言。因为scons是用python写的那就肯定要用到它的库啦,所以在scons之前先装python.
3.SpiderMonkey
一个用C语言实现的JavaScript脚本引擎,mongodb的数据类型格式是bson,而bson是json的二进制形式的存储格式,
json是JavaScript使用的数据类型。mongodb是支持javascript脚本语言进行操作的,所以就需要一个JavaScript脚本引擎了
也就是这个SpiderMonkey了。
4.boost
 一个很强大的C++库,mongodb是用C++写,使用到了这个库,所以需要它。

二、生成mongoclient.lib

windows下编码mongodb客户端需要自已先编译生成一个mongoclient.lib,也即连接mongodb服务器所需要的C++接口类库。

1、下载安装python,版本必须要>=2.4且<3.0(因为scons只有在python这些版本才能用)。

这个不用多说,安装路径如:C:\Python27

2、下载安装scons.(需要python,所以要先安装python)
将C:\Python27\Scripts添加到PATH中

http://sourceforge.net/projects/scons/files/scons/2.2.0/

下载scons,scons解压scons-2.2.0为止,将其拷贝出来,路径如:E:\mongodb-install\scons-2.2.0

cmd下cd E:\mongodb-install\scons-2.2.0,

python setup.py install进行scons的安装。

scons 安装时出现问题:(这个问题记不清了)

LookupError: unknown encoding: cp65001:

这是python的编码问题,python中没有定义cp65001编码,不识别。

要在出现问题的文件中加入:

import codecs
codecs.register(lambda name: name == 'cp65001' and codecs.lookup('utf-8') or None)

这样就能把cp65001编码映射成utf-8编码。

3、下载安装boost。

下载boost_1_49_0版本。

将其解压,文件夹重命名为boost,放于C:\boost下

(据说编译mongoclient.lib的默认搜索路径为C:\boost,但是实际操作根本没有搜到,还是要自己添加)

打开Visual Studio Command ,如下图中visual studio 命令提示(2010):

cd C:\boost;

输入bootstrap,等待其生成Boost构建工具bjam。

在命令行输入bjam toolset=msvc-10.0 variant=debug,release threading=multi link=static。然后等待安装完成。如果要生成64位库,键入命令bjam toolset=msvc-10.0 variant=debug,release threading=multilink=static runtime-link=static address-model=64。

注意红色的字,不过不这样输入,会生成shared模式,当编译mongoclient.lib时好多lib找不到,如

LINK : fatal error LNK1104: 无法打开文件“libboost_thread-vc100-mt-s-1_49.lib

安装完成后,屏幕上会提示"The Boost C++ Libraries were successfully built!"。并制定头文件和库文件目录。

头文件要include : C:\boost

生成的库文件在C:\boost\stage\lib下

4、下载mongodb的C++ driver
http://dl.mongodb.org/dl/cxx-driver/

下载mongodb-linux-x86_64-v2.4-latest.tar,一直解压到mongo-cxx-driver-v2.4,放置路径为:E:\mongodb-install\mongo-cxx-driver-v2.4

5、下载SpiderMonkey。
  这个链接是编程好的用于vs2010的https://github.com/dwight/vc2010_js,

建一个与mongodb同级目录js存放下载的文件

6、下载mongodb

将下载的mongodb放于C:\mongo文件下。不需要下源代码,下window64位的就可以了。以后的操作会在mongodb下生产lib和include。

下载mongodb C++ driver将其层层解压到mongo-cxx-driver-v2.2,将其拷贝到目录

E:\mongodb-install\mongo-cxx-driver-v2.2下,目录如下:

省略部分;

cd到该目录下运行scons mongoclient.lib来准备生成mongoclient.lib

出现错误:

说明boost路径配置不对。

配置boost路径,打开E:\mongodb-install\mongo-cxx-driver-v2.2\SConstruct文件,可以看到

AddOption("--extrapath",dest="extrapath",type="string",nargs=1,action="store",help="comma separated list of add'l paths  (--extrapath /opt/foo/,/foo) static linking")AddOption("--prefix",dest="prefix",type="string",nargs=1,action="store",default="/usr/local",help="installation root")

可以选择添加的--prefix为mongodb的路径,--extrapath就是用到的boost库的路径

可以运行程序的时候在cmd中加入:

E:\mongodb-install\mongo-cxx-driver-v2.2>scons --prefix c:\mongodb --extrapath C
:\boost,C:\boost\stage

也可以在SConstruct文件中加入

env.Append(CPPPATH=["C:/boost"], LIBPATH=["C:/boost/stage/lib"])

可能会出错:

提示text.h(89):#error temp error

这是因为scons没带使用 Unicode 字符集的参数,于是就默认使用多字节字符集

我们打开\mongo-cxx-driver-v2.2\src\mongo\util下的text.h文件

/* like toWideString but UNICODE macro sensitive */
# if !defined(_UNICODE)
#error temp error inline std::string toNativeString(const char *s) { return s; }
# elseinline std::wstring toNativeString(const char *s) { return toWideString(s); }
# endif

将#error temp error加双斜线注释掉 //#error temp error

可是输入后出错:

这些无法解析的外部符号包含在WS2_32.lib,Dbghelp.lib中,在SConstruct文件中加入

env.Append(LIBS=['WS2_32','Dbghelp'])

这些错误就没有了,但是出现一个很奇怪的问题

本来是要生成mongoclient.lib的,却说没有找到mongoclient.lib中止生成。

后来想起来之前有人说把E:\mongodb-install\mongo-cxx-driver-v2.2\src文件夹下的SConscript.client

中的一处

mongoclient_install = env.Install('#/', [mongoclient_lib,#env.SharedLibrary('mongoclient', clientSource),])

里面中的env.SharedLibrary('mongoclient', clientSource)前面的“#”去掉,当时就去掉了,

刚把这个#又加进去了,现在编译生成了mongoclient.lib。

vs2010连接mongodb服务器,X64位相关推荐

  1. MongoDB的客户端管理工具--nosqlbooster 连接MongoDB服务器

    nosqlbooster的官网地址为https://nosqlbooster.com.大家如果想直接下载,可以登入下载网址https://nosqlbooster.com/downloads. 下载w ...

  2. robo3t 连接服务器数据库_mongodb开启公共IP访问及Robo 3T连接远程mongodb服务器

    一.需求 需要使用 Robo 3T 连接并且操作远程的 mongodb 的服务器. 二.mongodb 服务器允许远程访问 因为我是自己下载的 linux 下的 mongodb套件,不是通过系统软件包 ...

  3. 使用MongoDB命令连接远程服务器的MongoDB数据库

    MongoDB连接远程服务器的命令格式如下: mongo 远程主机ip或DNS:MongoDB端口号/数据库名 -u user -p password //使用默认端口连接MongoDB mongo ...

  4. MongoDB在windows服务器安装部署及远程连接MongoDB

    (.\是表示在服务器的windows powershell下需要 表示信任此命令才会执行不然会报错,自己电脑上使用时可去掉.\) 在本地使用都不需要开启权限而在服务器上需要开启安全模式所以需要在原本的 ...

  5. mongodb 服务器性能监控,MongoDB监控

    MongoDB监控¶ 监控是所有数据库管理的重要组成部分.牢牢掌握 MongoDB 的报告将使您评估您的数据库的状态,并使您的部署不出意外.另外, 一种MongoDB 的常规操作参数允许您在它们恶化为 ...

  6. 服务器安装嵌入式系统,嵌入式设备连接云服务器

    嵌入式设备连接云服务器 内容精选 换一换 本节操作介绍在Windows和Linux环境中使用SSH密码方式远程登录Linux云服务器的操作步骤.弹性云服务器状态为"运行中".弹性云 ...

  7. silverlight java通信_Silverlight使用JavaSocket连接jabber服务器

    Silverlight使用JavaSocket连接jabber服务器 一.开发环境 Vs2010,Sl4,jdk6,MyEclipse8.5 二.Silverlight socket使用 注意事项 1 ...

  8. 从零开始搭建Node.js, Express, Ejs, Mongodb服务器

    http://www.toolmao.com/nodejs-express-ejs-mongodb-server 本文改自非鱼的<[翻译]前端开发人员入门指南,从零开始搭建Node.js, Ex ...

  9. 截至 2021-01-12 最新 MongoDB 服务器单台环境搭建参考

    文章目录 1.下载服务器的rpm安装包 2. 安装Python2 2.1. 直接rmp安装 python2 is needed 2.2. 安装并配置Python2 3. 执行安装rpm 4. 配置并启 ...

最新文章

  1. No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv7 armv7s)
  2. slf4j、jcl、jul、log4j1、log4j2、logback大总结
  3. pack 内存对齐操作
  4. SpringMVC基础配置与简单的SpringMVC的程序
  5. 深度揭秘Twitter的新一代流处理引擎Heron
  6. 七、Python第七课——有关列表的二三事(切片、切片的遍历和复制)
  7. 视频移动侦测VMD的实现
  8. 数据结构 2-3-4 静态链表
  9. linux下解除端口防火墙,Linux下防火墙配置、端口的开启和关闭
  10. php fakepath,javascript - chrome upload file 出现 fakepath,请解决方案
  11. testbed 桩函数设置
  12. ug草图精度怎么设置_UG怎么设置草图尺寸? UG草图尺寸的编辑方法
  13. 浏览器显示json格式
  14. Mac下的平铺式桌面 - Yabai
  15. 计算机派位录取,北京幼升小多校划片电脑派位是什么意思
  16. 【ibokan】好的用户界面-界面设计的一些技巧
  17. 小米手机计算机软件,手机计算器
  18. 专业工作站与高级PC区别及品牌机对比
  19. 攻防世界-warmup详解
  20. 网络协议之:基于 UDP 的高速数据传输协议 UDT

热门文章

  1. 深度学习RNN实现股票预测实战(附数据、代码)
  2. AI类人工智能产品经理的丛林法则
  3. java.net.URISyntaxException: Illegal character in query
  4. chrome的全局搜索快捷键
  5. 使用jmeter对ActiveMQ集群性能方案进行评估--转载
  6. python连接数据库示例(东西写得很详细,剽过来了)
  7. bubbliiiing/keras-face-recognition
  8. 比特币早期投资家:没有人能够阻止其发展 TechWeb 09-27 09:10 凤凰科技讯 据CNBC网站北京时间9月27日报道,风险投资家、“Social+Capital”基金创始人Chamath
  9. 逻辑回归的向量化实现样例
  10. CVPR 2015深度学习回顾