- 浏览: 268518 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (263)
- mysql (5)
- boost (6)
- 工具 (10)
- IT生活 (7)
- 多线程 (3)
- Ruby (15)
- php (2)
- MongoDB (39)
- 移动互联网 (2)
- 测试 (8)
- c++ (28)
- 书 (1)
- 网站 (3)
- 网络编程 (14)
- 开源软件 (1)
- 分布式计算 (1)
- 得得得 (1)
- php,wordpress (1)
- error (5)
- 编译 (2)
- 学习 (1)
- 杀毒软件 (1)
- dd (0)
- linux (21)
- 数据库 (1)
- STL (1)
- c++/c (5)
- 软件设计 (1)
- 操作系统 (4)
- 库 (2)
- win32 (1)
- s (0)
- openssl (1)
- perl (2)
- debug (1)
- windows (4)
- python (12)
- windows 防火墙 (1)
- vs (1)
- vim (2)
- vc (1)
- 浏览器插件的危害 (1)
- curl (0)
- 判断手机号码合法性的库 (0)
- 地址备注 (0)
- 安装 File::Slurp (1)
- cenos (2)
- shell (1)
- linunx (1)
- internet (1)
- software (1)
- widows (1)
- linux io (1)
- nginx (2)
- 算法 (2)
- google (1)
- protobuf (2)
- tengine (1)
- tools (1)
- lua (2)
- liunx (1)
- vcard (1)
- lua-iconv (1)
- 网络 (2)
- teat (0)
- ldconfig linux (0)
- awk (0)
- grep (0)
- windws (2)
- linux 命令 (1)
- tcp dump (1)
- vmware (1)
- question2answer (2)
- mongdb (1)
- 正则 (1)
- OCR (2)
- Windows Server (1)
最新评论
利用mongodb c++ driver来编译 静态链接库,报错:
version.obj : error LNK2001: unresolved external symbol "void __cdecl boost::thr
ow_exception(class std::exception const &)" (?throw_exception@boost@@YAXABVexcep
tion@std@@@Z)
等
解决方法是修改SConstruct:
添加 env.AppendUnique(CXXFLAGS=Split("/EHsc"));
这个选项为编译动态链接库,应该去掉
以下为修改后的SConstruct,仅供参考
# scons file for MongoDB c++ client library and examples
import os
# options
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" )
AddOption( "--release", dest="release", type="string", nargs=0, action="store", help="release build" )
env = Environment( MSVS_ARCH=None )
debug = False
def has_option( name ):
x = GetOption( name )
if x is None:
return False
return True
release = has_option( "release" )
if release:
print("release")
debug = False
else:
print("debug")
debug = True
def addExtraLibs( s ):
for x in s.split(","):
if os.path.exists( x ):
env.Append( CPPPATH=[ x + "/include" ] )
env.Append( LIBPATH=[ x + "/lib" ] )
env.Append( LIBPATH=[ x + "/lib64" ] )
#add boost
boostDir = "E:/boost"
env.Append( CPPPATH=[ boostDir ] )
env.Append( LIBPATH=[ boostDir + "/lib" ] )
#add pcre
env.Append( CPPPATH=[ "./third_party/pcre-7.4" ] )
env.Append( LIBPATH=[ "./"] )
#set unicode
env.Append( CPPDEFINES=[ "_UNICODE" ] )
env.Append( CPPDEFINES=[ "UNICODE" ] )
#env.Append( CPPFLAGS="Ehsc" )
env.AppendUnique(CXXFLAGS=Split("/EHsc"));
if GetOption( "extrapath" ) is not None:
addExtraLibs( GetOption( "extrapath" ) )
env.Append( CPPPATH=[ "mongo/" ] )
env.Append( CPPDEFINES=[ "_SCONS" , "MONGO_EXPOSE_MACROS" ] )
nix = False
linux = False
if "darwin" == os.sys.platform:
addExtraLibs( "/opt/local/" )
nix = True
elif "linux2" == os.sys.platform or "linux3" == os.sys.platform:
nix = True
linux = True
if nix:
env.Append( CPPFLAGS=" -O3" )
env.Append( LIBS=["pthread"] )
if linux:
env.Append( LINKFLAGS=" -Wl,--as-needed -Wl,-zdefs " )
#add libs: thread, filesystem, program_options
boostLibs = [ "thread" , "filesystem", "program_options" ]
#for lib in boostLibs:
#env.Append( LIBS=[ "boost_%s-vc100-mt-1_48" % lib] )
#print("boost_%s-vc100-mt-1_48" % lib)
conf = Configure(env)
if debug:
env.Append( CPPDEFINES=[ "_DEBUG" ] )
env.Append( CPPFLAGS=" /MTd " )
for lib in boostLibs:
if not conf.CheckLib("boost_%s-vc100-mt-gd-1_48" % lib):
conf.CheckLib("boost_%s-mt-1_48" % lib)
else:
env.Append( CPPDEFINES=[ "NDEBUG" ] )
env.Append( CPPFLAGS=" /MT " )
for lib in boostLibs:
if not conf.CheckLib("boost_%s-vc100-mt-1_48" % lib):
conf.CheckLib("boost_%s-mt-1_48" % lib)
dirs = [ "" , "bson/" , "bson/util/" ,
"client/" , "s/" , "shell/" ,
"db/" ,
"scripting/" ,
"util/" , "util/concurrency/" , "util/mongoutils/" , "util/net/" ]
allClientFiles = []
for x in dirs:
allClientFiles += Glob( "mongo/" + x + "*.cpp" )
allClientFiles += Glob( "mongo/util/*.c" )
libs = []
#libs += env.SharedLibrary( "mongoclient" , allClientFiles )
libs += env.Library( "mongoclient" , allClientFiles )
# install
prefix = GetOption( "prefix" )
for x in libs:
env.Install( prefix + "/lib/" , str(x) )
for x in dirs:
x = "mongo/" + x
env.Install( prefix + "/include/" + x , Glob( x + "*.h" ) )
env.Alias( "install" , prefix )
# example setup
#clientTests = []
#clientEnv = env.Clone();
#clientEnv.Prepend( LIBS=["libmongoclient.a"])
#clientEnv.Prepend( LIBPATH=["."] )
# examples
#clientTests += [ clientEnv.Program( "firstExample" , [ "client/examples/first.cpp" ] ) ]
#clientTests += [ clientEnv.Program( "secondExample" , [ "client/examples/second.cpp" ] ) ]
#clientTests += [ clientEnv.Program( "whereExample" , [ "client/examples/whereExample.cpp" ] ) ]
#clientTests += [ clientEnv.Program( "authTest" , [ "client/examples/authTest.cpp" ] ) ]
#clientTests += [ clientEnv.Program( "httpClientTest" , [ "client/examples/httpClientTest.cpp" ] ) ]
#clientTests += [ clientEnv.Program( "clientTest" , [ "client/examples/clientTest.cpp" ] ) ]
#clientEnv.Alias("clientTests", clientTests, [])
version.obj : error LNK2001: unresolved external symbol "void __cdecl boost::thr
ow_exception(class std::exception const &)" (?throw_exception@boost@@YAXABVexcep
tion@std@@@Z)
等
解决方法是修改SConstruct:
添加 env.AppendUnique(CXXFLAGS=Split("/EHsc"));
这个选项为编译动态链接库,应该去掉
以下为修改后的SConstruct,仅供参考
引用
# scons file for MongoDB c++ client library and examples
import os
# options
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" )
AddOption( "--release", dest="release", type="string", nargs=0, action="store", help="release build" )
env = Environment( MSVS_ARCH=None )
debug = False
def has_option( name ):
x = GetOption( name )
if x is None:
return False
return True
release = has_option( "release" )
if release:
print("release")
debug = False
else:
print("debug")
debug = True
def addExtraLibs( s ):
for x in s.split(","):
if os.path.exists( x ):
env.Append( CPPPATH=[ x + "/include" ] )
env.Append( LIBPATH=[ x + "/lib" ] )
env.Append( LIBPATH=[ x + "/lib64" ] )
#add boost
boostDir = "E:/boost"
env.Append( CPPPATH=[ boostDir ] )
env.Append( LIBPATH=[ boostDir + "/lib" ] )
#add pcre
env.Append( CPPPATH=[ "./third_party/pcre-7.4" ] )
env.Append( LIBPATH=[ "./"] )
#set unicode
env.Append( CPPDEFINES=[ "_UNICODE" ] )
env.Append( CPPDEFINES=[ "UNICODE" ] )
#env.Append( CPPFLAGS="Ehsc" )
env.AppendUnique(CXXFLAGS=Split("/EHsc"));
if GetOption( "extrapath" ) is not None:
addExtraLibs( GetOption( "extrapath" ) )
env.Append( CPPPATH=[ "mongo/" ] )
env.Append( CPPDEFINES=[ "_SCONS" , "MONGO_EXPOSE_MACROS" ] )
nix = False
linux = False
if "darwin" == os.sys.platform:
addExtraLibs( "/opt/local/" )
nix = True
elif "linux2" == os.sys.platform or "linux3" == os.sys.platform:
nix = True
linux = True
if nix:
env.Append( CPPFLAGS=" -O3" )
env.Append( LIBS=["pthread"] )
if linux:
env.Append( LINKFLAGS=" -Wl,--as-needed -Wl,-zdefs " )
#add libs: thread, filesystem, program_options
boostLibs = [ "thread" , "filesystem", "program_options" ]
#for lib in boostLibs:
#env.Append( LIBS=[ "boost_%s-vc100-mt-1_48" % lib] )
#print("boost_%s-vc100-mt-1_48" % lib)
conf = Configure(env)
if debug:
env.Append( CPPDEFINES=[ "_DEBUG" ] )
env.Append( CPPFLAGS=" /MTd " )
for lib in boostLibs:
if not conf.CheckLib("boost_%s-vc100-mt-gd-1_48" % lib):
conf.CheckLib("boost_%s-mt-1_48" % lib)
else:
env.Append( CPPDEFINES=[ "NDEBUG" ] )
env.Append( CPPFLAGS=" /MT " )
for lib in boostLibs:
if not conf.CheckLib("boost_%s-vc100-mt-1_48" % lib):
conf.CheckLib("boost_%s-mt-1_48" % lib)
dirs = [ "" , "bson/" , "bson/util/" ,
"client/" , "s/" , "shell/" ,
"db/" ,
"scripting/" ,
"util/" , "util/concurrency/" , "util/mongoutils/" , "util/net/" ]
allClientFiles = []
for x in dirs:
allClientFiles += Glob( "mongo/" + x + "*.cpp" )
allClientFiles += Glob( "mongo/util/*.c" )
libs = []
#libs += env.SharedLibrary( "mongoclient" , allClientFiles )
libs += env.Library( "mongoclient" , allClientFiles )
# install
prefix = GetOption( "prefix" )
for x in libs:
env.Install( prefix + "/lib/" , str(x) )
for x in dirs:
x = "mongo/" + x
env.Install( prefix + "/include/" + x , Glob( x + "*.h" ) )
env.Alias( "install" , prefix )
# example setup
#clientTests = []
#clientEnv = env.Clone();
#clientEnv.Prepend( LIBS=["libmongoclient.a"])
#clientEnv.Prepend( LIBPATH=["."] )
# examples
#clientTests += [ clientEnv.Program( "firstExample" , [ "client/examples/first.cpp" ] ) ]
#clientTests += [ clientEnv.Program( "secondExample" , [ "client/examples/second.cpp" ] ) ]
#clientTests += [ clientEnv.Program( "whereExample" , [ "client/examples/whereExample.cpp" ] ) ]
#clientTests += [ clientEnv.Program( "authTest" , [ "client/examples/authTest.cpp" ] ) ]
#clientTests += [ clientEnv.Program( "httpClientTest" , [ "client/examples/httpClientTest.cpp" ] ) ]
#clientTests += [ clientEnv.Program( "clientTest" , [ "client/examples/clientTest.cpp" ] ) ]
#clientEnv.Alias("clientTests", clientTests, [])
发表评论
-
mongodb 从3.0 升级到3.2
2016-06-15 19:27 1425下载mongodb: curl "https://f ... -
MongoDB 日志切换
2016-06-13 17:47 820MongoDB默认情况下不会自动的切换轮转日志的,这将会导致日 ... -
mongodb c++ driver 从2.4.6 升级到3.0.1 注意点 (windows版本)
2015-09-15 17:58 6861. 使用mongodbclient的静态库需要定义下面的值 ... -
check_mongodb nagios
2015-08-17 17:22 0nagios check_mongodb插件监控mongodb ... -
Mongodb profiling
2015-08-06 10:14 407Mongodb profiling是Mngodb提供的类似于m ... -
linux mongdb 备份操作笔记
2015-07-22 09:21 586目的:添加一个延迟1小时的sencodary作为冷备数据库 ... -
mongodb 操作失失误救策略
2015-07-14 20:47 431杀掉某个正在处理的操作: db.currentOp() db ... -
mongodb oplog
2015-06-30 10:53 517mongodb oplog的使用 所在位置: Master/ ... -
mongodb 升级的问题导致添加帐号出现问题
2015-06-05 11:47 939mongodb 原有数据库版本:2.2.2 更新到数据库版本 ... -
libmongodbclient 2.6.6
2015-02-25 11:43 488mongodb c++ driver 2.6之后的版本不能从m ... -
mongodb 搜索结果保存到文件中
2013-07-22 16:44 1932第一种方式: mongo localhost:11111/te ... -
getLastError mongodb
2013-04-03 10:32 0一、简介 很多人抱怨mongodb是内存数据库,也没有事务,会 ... -
getLastError mongodb
2013-03-30 18:24 931http://docs.mongodb.org/manual/ ... -
[转]十个 MongoDB 使用要点
2013-03-20 10:19 828从 [url = "http://space.i ... -
利用mongodb c++ driver来编译
2012-12-04 15:12 0编译库时错误: 引用 E:\code_64\v2.2.2\m ... -
scons 64 mongodb
2012-08-01 19:52 973编译64位mongodb spin_lock.cpp cl ... -
scons 编译 mongodb client lib
2012-07-31 20:09 1213Use scons to build MongoDB and ... -
MongoDB 客户端 MongoVue
2012-05-14 11:13 944今天在同事那里看到了 ... -
mongodb 2.0.0 replica set + authentication bug
2012-04-26 13:56 921mongodb 2.0.0 replica set + aut ... -
array in mongodb ( c++ driver)
2012-04-25 17:31 2224BSONArray BSONArrayBuilder ...
相关推荐
2. **安装与配置**:在Windows环境下,首先需要下载并解压提供的压缩包`mongodb-cxx-driver-dll64-debug`,包含的库文件用于链接到你的C++项目。开发者需要将这些库文件添加到项目的编译路径中,确保编译器可以找到...
MongoDB C++ Driver 3.4.x 是MongoDB官方提供的一款C++编程接口,它使得开发者能够使用C++语言高效地与MongoDB数据库进行交互。这个版本是针对MongoDB的一个重要更新,带来了许多性能优化、功能增强以及更好的API...
总的来说,MongoDB C++驱动为C++开发者提供了一个方便的工具,使他们能够利用C++的强大功能和效率来处理MongoDB数据。通过理解驱动的工作原理和使用方法,开发者可以构建高效、可靠的C++应用,与MongoDB数据库无缝...
赠送jar包:mongodb-driver-sync-4.2.3.jar; 赠送原API文档:mongodb-driver-sync-4.2.3-javadoc.jar; 赠送源代码:mongodb-driver-sync-4.2.3-sources.jar; 赠送Maven依赖信息文件:mongodb-driver-sync-4.2.3....
MongoDB C++驱动编译教程,采用scons完成MongoDB C++驱动的编译,包括 boost库下载地址,MongoDB C++t驱动下载地址,包括Python 2.7.16版本 32位 X86安装包,以及驱动编译的具体教程,及编译过程中的几个示例。...
赠送jar包:mongodb-driver-core-4.2.3.jar; 赠送原API文档:mongodb-driver-core-4.2.3-javadoc.jar; 赠送源代码:mongodb-driver-core-4.2.3-sources.jar; 赠送Maven依赖信息文件:mongodb-driver-core-4.2.3....
赠送jar包:mongodb-driver-sync-4.2.3.jar; 赠送原API文档:mongodb-driver-sync-4.2.3-javadoc.jar; 赠送源代码:mongodb-driver-sync-4.2.3-sources.jar; 赠送Maven依赖信息文件:mongodb-driver-sync-4.2.3....
安装:mongod --dbpath=D:\mongodb\db --logpath=D:\mongodb\log\mongo.log= --install 卸载:mongod.exe --remove 最近准备把空闲时间都发在mongodb的研究上,因此将有一系列的文章记录这个过程。 直接从官网...
MongoDB的Java驱动程序是连接Java应用程序与MongoDB服务器的关键组件,它提供了丰富的API来执行各种数据库操作。在本篇文章中,我们将深入探讨`mongodb-driver-core-3.5.0.jar`这一核心驱动包及其相关组件。 `...
libzstd.dll 是 Zstandard 压缩库的动态链接库,Zstandard 是一种快速且高压缩率的压缩算法,可能被 MongoDB 驱动用作数据传输的压缩方式,提高网络传输效率。 SharpCompress.dll 是一个开源的 .NET 库,支持多种...
在Windows环境下,通常会使用Visual Studio来编译MongoDB,因为它提供了良好的支持和优化。 1. **获取源代码**:从MongoDB官方网站的GitHub仓库下载源代码,通常是通过git克隆仓库或者直接下载zip文件。 2. **配置...
总的来说,构建MongoDB C++ Win32驱动需要对C++编程、Windows系统、MongoDB API以及可能的第三方库(如Boost)有深入的理解。通过这个过程,你不仅可以掌握驱动的构建,还能增强对MongoDB数据库和C++开发的整体理解...
这意味着你可以将这些库添加到你的项目中,配置好包含路径和库依赖,然后开始编写和编译使用 MongoDB C++ 驱动的代码。 4. **设置步骤**:为了使用这些资源,你需要将 `include` 文件夹添加到项目的头文件搜索路径...
mongodb-driver-3.4.3,mongodb java开发中常用组件。
java和mongodb连接,需要mongodb-driver,您还必须下载其依赖项: bson和 mongodb-driver-core》》3个包: mongodb-driver-3.8.2.jar; bson-3.8.2.jar; mongodb-driver-core-3.8.2.jar
mongodb-driver-core 4.3.3版本
总的来说,这个压缩包提供了从头编译MongoDB C++驱动程序的详细过程,以及如何在C++项目中使用这些驱动的实例。对于希望在C++应用中集成MongoDB的开发者来说,这是一个宝贵的资源。通过学习和实践这些步骤,开发者...
通过上述介绍,我们可以看到 MongoDB Java Driver 提供了一种简单而强大的方式来与 MongoDB 进行交互。无论是简单的 CRUD 操作还是复杂的查询需求,都可以通过 Java 驱动轻松实现。掌握这些基本操作对于快速开发基于...