我使用以下说明编译了Mongo C驱动程序:
使用命令:
scons --m32 --standard-env
我现在正试图在另一个项目中使用驱动程序,在我用来编译驱动程序的同一台机器上。我的环境是Windows 7(64位)使用Visual Studio 2008(SP1)标准。我不是,但是使用IDE,而是通过命令提示符自定义makefile。
我将它添加到我的项目'makefile',指向INCLUDE到mongo.h文件夹 我将它添加到我的项目的makefile,指向LIBS到mongoc.lib文件夹
我的代码是:
#include "blakserv.h"
mongo conn;
void InitMongo()
{
mongo_init( &conn );
mongo_client( &conn, "127.0.0.1", 27017 );
}
void EndMongo()
{
mongo_destroy( &conn );
}
链接命令:
link -nologo debug\main.obj debug\loadkod.obj debug\class.obj debug\message.obj debug\object.obj debug\sendmsg.obj debug\roofile.obj debug\bufpool.obj debug\ccode.obj debug\channel.obj debug\list.obj debug\timer.obj debug\session.obj debug\loadrsc.obj debug\blakres.obj debug\roomdata.obj debug\commcli.obj debug\string.obj debug\async.obj debug\loadgame.obj debug\game.obj debug\term.obj debug\account.obj debug\loadacco.obj debug\saveacco.obj debug\savestr.obj debug\loadstr.obj debug\nameid.obj debug\time.obj debug\dllist.obj debug\trysync.obj debug\saveall.obj debug\loadall.obj debug\synched.obj debug\motd.obj debug\admin.obj debug\garbage.obj debug\kodbase.obj debug\savegame.obj debug\user.obj debug\system.obj debug\resync.obj debug\gamelock.obj debug\config.obj debug\apndfile.obj debug\admincons.obj debug\builtin.obj debug\version.obj debug\systimer.obj debug\memory.obj debug\interface.obj debug\intrlock.obj debug\chanbuf.obj debug\debug.obj debug\saversc.obj debug\adminfn.obj debug\table.obj debug\parsecli.obj debug\rscload.obj debug\crc.obj debug\md5.obj debug\maintenance.obj debug\block.obj debug\stringinthash.obj debug\intstringhash.obj debug\files.obj debug\sprocket.obj debug\database.obj debug\blakmongo.obj debug\blakserv.res gdi32.lib user32.lib wsock32.lib winmm.lib comctl32.liblibmysql.lib mongoc.lib bson.lib -OUT:debug\blakserv.exe /STACK:0x180000 /map /debug /subsystem:windows -nologo /debug /machine:ix86
链接错误:
blakmongo.obj : error LNK2001: unresolved external symbol __imp_@mongo_client@12
blakmongo.obj : error LNK2001: unresolved external symbol __imp_@mongo_init@4
blakmongo.obj : error LNK2001: unresolved external symbol __imp_@mongo_destroy@4
debug\blakserv.exe : fatal error LNK1120: 3 unresolved externals
链接命令清楚地显示mongoc.lib
,我使用dumpbin将.lib的标题转储到文件中,这清楚地显示了所需的对象。
我也尝试将MongoDB驱动程序编译为32对64位,但收到相同的结果。
我觉得答案非常简单,而且我正在为它辩护。
这是一个开源项目,位于:https://github.com/Daenks/Meridian59_103
感谢您的帮助!
答案 0 :(得分:0)
我想为C驱动程序文档的状态道歉,我们实际上已经完成了重写,但没有机会更新网站上的文档。
你看起来会好得多:https://github.com/mongodb/mongo-c-driver。构建系统更现代(基于Windows的cmake,其他地方的autotools)我们甚至可以为win64提供二进制文件。除了获得更新之外,它几乎与其他驱动程序功能相同(包括2.6个功能)。
看看它,看它是否有帮助。