(链接)Visual Studio 2010 中 Berkeley DB 的问题

Posted

技术标签:

【中文标题】(链接)Visual Studio 2010 中 Berkeley DB 的问题【英文标题】:(Linking)Problem in Berkeley DB in Visual studio 2010 【发布时间】:2011-04-10 12:51:28 【问题描述】:

我正在准备开始使用 Berkeley DB,我在此处下载了最新版本的 DB:Berkeley DB 5.1.25.msi Windows installer, with AES encryption

安装后我启动了 Visual Studio 2010 并执行了以下操作:

项目->“项目名称”属性 -> VC++ 目录 -> 包含目录

我添加了路径

C:\Program Files\Oracle\Berkeley DB 11gR2 5.1.25\包括

我写了以下代码:

#include<db_cxx.h>
#include<iostream>
using namespace std;


int main()
    Db db(NULL, 0);               // Instantiate the Db object

    return 0;

但它显示以下错误:

错误 1 ​​错误 LNK2019:未解决 外部符号“公共:虚拟 __thiscall Db::~Db(void)" (??1Db@@UAE@XZ) 在函数中引用 _main C:\Users\Ahmed\documents\visual studio 2010\项目\ssss\ssss\test.obj

错误 2 错误 LNK2019:未解决 外部符号“公共:__thiscall Db::Db(类 DbEnv *,unsigned int)" (??0Db@@QAE@PAVDbEnv@@I@Z) 引用 在功能上 _main C:\Users\Ahmed\documents\visual studio 2010\项目\ssss\ssss\test.obj

错误 3 错误 LNK1120: 2 未解决 外部 C:\Users\Ahmed\documents\visual 工作室 2010\Projects\ssss\Debug\ssss.exe 1

我尝试按照文档进行操作,我阅读了这篇 inf,但我不知道如何在 Visual Studio 2010 中应用它:

在构建应用程序时 开发,你应该通常使用 编译选项“调试多线程 DLL”并链接到 build_windows\Debug\libdb51d.lib。你 也可以使用发布版本构建 Berkeley DB 图书馆和 工具,将放置在 build_windows\Win32\Release\libdb51.lib。 链接版本时 构建,你应该编译你的代码 使用“发布多线程 DLL” 编译选项。您还需要 将 build_windows 目录添加到 您的包含目录列表 应用程序的项目,或复制 Berkeley DB 将文件包含到另一个 位置。

【问题讨论】:

【参考方案1】:

您需要链接 Berkley DB 中包含的 .lib。可能有一个 C:\Program Files\Oracle\Berkeley DB 11gR2 5.1.25\lib 文件夹。您将需要添加此文件夹,或者可能是适当的子文件夹。例如,可能有一个包含 x86 和 x64 子文件夹的 Windows 文件夹。您需要将适当的子文件夹添加到“库目录”中,该文件夹位于“包含目录”选项的下方。

然后您必须向链接器指定要包含的 .lib。您应该检查软件的文档以查看需要哪一个。

在VS2010中添加库依赖有两种方式。第一种方法是在项目内的适当位置添加以下代码行(在您的 sn-p 中,它将属于您唯一源文件的最顶部)。

#pragma comment(lib, "filename.lib")

请注意,您的文件名需要用 "s 包裹,并且该行不应后跟 ;.

另一种方法是在项目属性设置中添加名称。如果您转到项目设置->链接器->输入->附加依赖项。您应该会看到构建控制台应用程序(如 kernel32.lib、user32.lib 等)所需的默认 .libs。只需像添加其他包含文件夹一样添加文件。

【讨论】:

我最近意识到了这一点。谢谢莱利·巴内特。

以上是关于(链接)Visual Studio 2010 中 Berkeley DB 的问题的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2010 URL 超链接颜色 - 可以不使用吗?

将数据库 sql server 2008 链接到 Visual Studio 2010

使用 Visual Studio 2010 将 libexif 编译为静态库 - 然后从 Visual C++ 项目链接

如何在 Visual Studio 2010 中使用 Visual Studio 2008 创建的 DLL?

Visual Studio 2010 C++:如何判断链接器实际尝试链接的 LIB 文件?

Visual Studio 2010 不会自动链接来自依赖项的项目中的静态库,因为它应该是