我在构建MongoDB C ++驱动程序或使用驱动程序库时遇到问题。
我使用驱动程序源2.5.5。我使用了带有以下参数的scon:
scons.py --prefix = e:\ mongo-client-install --full install-mongoclient
对我来说似乎一切正常。我没有认识到构建过程中的任何错误。目录“mongo-client-install已生成并包含头文件和lib文件。
当我将头文件和lib文件包含到VC2010时,编译本身不会产生错误。在链接期间,我得到3个链接错误:
* 1> MongoDriverTest.obj:错误LNK2019:未解析的外部符号“__declspec(dllimport)public:virtual _ cdecl mongo :: DBClientConnection :: ~DBClientConnection(void)”( _imp _ ?? 1DBClientConnection @ mongo @@ UEAA @ XZ)在函数“void _ cdecl run(void)”中引用(?run @@ YAXXZ) 1> MongoDriverTest.obj:错误LNK2019:未解析的外部符号“ _declspec(dllimport)public:void __cdecl mongo :: DBClientConnection :: connect(class std :: basic_string,class std :: allocator> const&) “(_ imp ?connect @ DBClientConnection @ mongo @@ QEAAXAEBV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@@ Z)在函数“void _ cdecl run(void)”中引用(?run @@ YAXXZ) 1> MongoDriverTest.obj:错误LNK2019:未解析的外部符号“ _declspec(dllimport)public:__ cdecl mongo :: DBClientConnection :: DBClientConnection(bool,class mongo :: DBClientReplicaSet *,double)”(_ imp ?? 0DBClientConnection @ mongo @@ QEAA @ _NPEAVDBClientReplicaSet @ 1 @ N @ Z)在函数“void __cdecl run(void)”中引用(?run @@ YAXXZ)*
有没有人知道使用当前的MongoDB C ++驱动程序作为预编译库?使用2.4.x版本的MongoDB驱动程序,我没有任何问题包装lib和使用驱动程序。但是,由于我正在设置一个新项目,我想使用当前的MongoDB C ++驱动程序。
--- --- EDIT 为了澄清,SCON使用VC2010构建驱动程序库,小应用程序也使用VC2010构建。应用程序直接在IDE中构建,使用pragma comment(lib,...)
添加lib