vs2010连接mongodb服务器,X64位
来源:互联网 发布:域名的别名 编辑:程序博客网 时间:2024/04/30 19:40
这个东西真是耗费了很多时间和精力,中间出现好多错误,把英文的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 codecscodecs.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; }# else inline 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位
- mongodb window 7 X64位安装说明
- 64位VS2010配置MongoDB
- 64位oracle数据库安装32位plsql解决方法/关于win7 x64 连接oracle 客户端 VS2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
- Windows 2008 R2(64位)+VS2010+ASP.net远程连接Oracle服务器(64位)
- PL-SQL Win7 x64位连接数据库
- 连接mongodb服务器
- vs2010 x64平台调用64位DLL问题
- Ubuntu12.04x64位服务器版本安装mono环境
- Windows 7 x64 系统中安装 Apache64位服务器
- Centos 6.6(X64位)系统编译安装Apache服务器
- windows 7 X64位toad无法连接数据库
- Windows x64配置供32位应用程序连接的ODBC
- VS2010下64位Mongodb环境配置过程
- windows x64 装vs2010
- SparseLM VS2010 X64
- pcl+vs2010+x64配置
- win7(64位)+VS2010(x64 app)+opengl 无法解析的外部符号
- 自己的usaco代码---PROB Friday the Thirteenth
- cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
- 黑马程序员--JAVA基础复习之多线程(二)线程安全与解决方法
- linux源码安装和库文件的一些经验(二)--pkg-config
- HDOJ 2054
- vs2010连接mongodb服务器,X64位
- zoj 1456 Minimum Transport Cost
- [转]Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)的解决办法 .
- datarow[]转换成datatable
- 页面传值?方式
- sextante源码剖析(二)之sextante算法框架
- ORACLE误删数据恢复
- 云端服务消失会怎样?
- Android中的Context详解