C++的mongodb驱动遇到的问题 boost,跪求高手!!

宁静的蚂蚁 2013-04-27 08:43:41
我这里用的windows 32位,下载的是mongodb的2.4.3,boost版本是1.5.3,我下载下来整个的源代码,
然后进入根目录 命令:scons --release --32 mongodbclient.lib

libboost_thread-vc100-mt-s-1_53.lib(thread.obj) : error LNK2005: "public: virtual __thiscall boost::detail::thread_data_base::~thread_data_base(void)" (??1thread_data_base@detail@boost@@UAE@XZ) 已经在 mongoclient.lib(background.obj) 中定义
mongoclient.lib(log.obj) : error LNK2001: 无法解析的外部符号 "class boost::filesystem3::file_status __cdecl boost::filesystem3::detail::status(class boost::filesystem3::path const &,class boost::system::error_code *)" (?status@detail@filesystem3@boost@@YA?AVfile_status@23@ABVpath@23@PAVerror_code@system@3@@Z)
1>mongoclient.lib(log.obj) : error LNK2001: 无法解析的外部符号 "private: static class std::codecvt<wchar_t,char,int> const * & __cdecl boost::filesystem3::path::wchar_t_codecvt_facet(void)" (?wchar_t_codecvt_facet@path@filesystem3@boost@@CAAAPBV?$codecvt@_WDH@std@@XZ)
1>mongoclient.lib(log.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl boost::filesystem3::path_traits::convert(char const *,char const *,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > &,class std::codecvt<wchar_t,char,int> const &)" (?convert@path_traits@filesystem3@boost@@YAXPBD0AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@ABV?$codecvt@_WDH@5@@Z)
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__send@16
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__gethostbyname@4
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__gethostbyaddr@12
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__closesocket@4
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__WSASetLastError@4
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__getservbyname@8
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__socket@12
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__recv@16
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__getservbyport@8
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__setsockopt@20
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__ntohs@4
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__htons@4
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@0
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__htonl@4
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__inet_addr@4
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__WSAStartup@8
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__inet_ntoa@4
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__connect@12
1>mongoclient.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__gethostname@8
1>mongoclient.lib(stacktrace.obj) : error LNK2001: 无法解析的外部符号 __imp__SymGetLineFromAddr64@20
1>mongoclient.lib(stacktrace.obj) : error LNK2001: 无法解析的外部符号 __imp__SymSetOptions@4
1>mongoclient.lib(stacktrace.obj) : error LNK2001: 无法解析的外部符号 __imp__SymGetOptions@0
1>mongoclient.lib(stacktrace.obj) : error LNK2001: 无法解析的外部符号 "public: class boost::filesystem3::path __thiscall boost::filesystem3::path::parent_path(void)const " (?parent_path@path@filesystem3@boost@@QBE?AV123@XZ)
1>mongoclient.lib(stacktrace.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl boost::filesystem3::path_traits::convert(wchar_t const *,wchar_t const *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::codecvt<wchar_t,char,int> const &)" (?convert@path_traits@filesystem3@boost@@YAXPB_W0AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV?$codecvt@_WDH@5@@Z)
1>mongoclient.lib(stacktrace.obj) : error LNK2001: 无法解析的外部符号 __imp__SymCleanup@4
1>mongoclient.lib(stacktrace.obj) : error LNK2001: 无法解析的外部符号 __imp__SymGetModuleInfo64@16
1>mongoclient.lib(stacktrace.obj) : error LNK2001: 无法解析的外部符号 __imp__SymInitialize@12
1>mongoclient.lib(stacktrace.obj) : error LNK2001: 无法解析的外部符号 __imp__StackWalk64@36
1>mongoclient.lib(stacktrace.obj) : error LNK2001: 无法解析的外部符号 __imp__SymFromAddr@20
1>mongoclient.lib(background.obj) : error LNK2001: 无法解析的外部符号 "public: __thiscall boost::thread::~thread(void)" (??1thread@boost@@QAE@XZ)
1>mongoclient.lib(background.obj) : error LNK2001: 无法解析的外部符号 "private: void __thiscall boost::thread::start_thread(void)" (?start_thread@thread@boost@@AAEXXZ)
1>C:\Documents and Settings\Administrator\my documents\visual studio 2010\Projects\MongoDB_Connection4\Release\MongoDB_Connection4.exe : fatal error LNK1120: 34 个无法解析的外部命令
...全文
482 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
宁静的蚂蚁 2013-07-31
  • 打赏
  • 举报
回复
二楼 说话 真是不太清除,我弄了半天才搞清楚是修改,mongodb驱动根目录下SConstruct
不过总算是解决问题。。
多线一楼
虽然还是不太明白,这么长时间了结贴吧。
wo_buhui 2013-07-31
  • 打赏
  • 举报
回复
1.如果提示这种错误一般是少了
mongoclient.lib
Dbghelp.lib
Ws2_32.lib
这三个文件,想办法在链接的时候加进去。
2.编译mongodb的驱动不要用整个源码,去官网下载驱动源代码,进入根目录,修改
env = Environment(BUILD_DIR='{此处为你的boost库的目录}',
CLIENT_ARCHIVE='${CLIENT_DIST_BASENAME}${DIST_ARCHIVE_SUFFIX}',
CLIENT_DIST_BASENAME='mongo-cxx-driver-v2.4',
CLIENT_LICENSE='#LICENSE.txt',
CLIENT_SCONSTRUCT='#SConstruct',
MSVS_ARCH=None,
PYTHON=sys.executable)
然后scons
如果提示#error temp error 则是字符集的问题。
定义
#_UNICODE
3.默认编译为release模式,在vs中将程序代码生成改为MT
zhyajshhz 2013-04-28
  • 打赏
  • 举报
回复
也遇到相同问题,在linux系统下,64位,求解答!

1,746

社区成员

发帖
与我相关
我的任务
社区描述
MongoDB相关内容讨论区
社区管理员
  • MongoDB社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧