替换 libdb 文件以升级 Berkeley DB?

Posted

技术标签:

【中文标题】替换 libdb 文件以升级 Berkeley DB?【英文标题】:Replacing libdb file to upgrade Berkeley DB? 【发布时间】:2016-03-11 03:20:26 【问题描述】:

我正在将项目中的 BDB 从 v4.3 升级到 6.1。这就是我设法处理这种情况的方式。

我的印象是 libdb61.lib 包含来自BDB Installation & Build Guide 的所有 BDB,所以我下载了最新的 BDB,将其构建在 BDB 的 VS 项目中,放置 libdb61.lib 在 libdb43.lib 在我的 VS 项目中的位置,并更改了 Project_1 的 “Properties > Config Prop > Librarian > Additional Dependencies” 指向 libdb61.lib

我成功构建了 Project_1;但是,我在构建 Project_2 时遇到了多个“错误 LNK2001”,这取决于 Project_1。

这是错误消息之一:

1>Project_1.lib(IndexTable.obj) : error LNK2001: unresolved external symbol "public: virtual int __cdecl Db::set_bt_compare(int (__cdecl*)(class Db *,

我认为我的项目没有包含诸如“set_bt_compare()”之类的函数的文件,该文件包含在 BDB 的“DB”项目中。

我做错了吗? (我不确定是否可以通过简单的添加文件和更改项目属性来升级。另外,我没有添加 libdb61.dll、libdb61.exp、libdb61.pdb 等文件。

【问题讨论】:

【参考方案1】:

通读所有“将应用程序升级到 Berkeley DB.X.Y.Z”章节。您不能只将 db-6.x 替换为 db-4.x(虽然 API 大体相同,但还是有一些变化)。

【讨论】:

以上是关于替换 libdb 文件以升级 Berkeley DB?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 FreeBSD 9.1 系统中使用 libdb-4.2?

Berkeley DB(无法定位组件)

Berkeley DB:由于先前在 c api 调用期间异常退出而卡在 futex_wait

如何用 Berkeley DB 替换 SQLite

无法加载模块 libdb2.a(shr.o)

size命令的sysv和berkeley格式差别