【问题标题】:sqlite visual studio 2015sqlite视觉工作室2015
【发布时间】:2016-06-02 14:02:09
【问题描述】:

我正在尝试使用 sqlite 和 Visual Studio 制作程序。我已将sqlite3.def, sqlite3.c, sqlite3.h, sqlite3.dll 文件添加到项目目录中。我还在项目设置中将THREADSAFESQLITE_ENABLE_COLUMN_METADATA 添加到预处理器定义和Linker -> Input -> Module definition file 中的sqlite3.def。我正在尝试编译以下程序

#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h"


int main(int argc, char **argv)
{
    sqlite3* db;
    char* zErr;
    int rc;
    char* sql;

    rc = sqlite3_open("test.db", &db);

    if (rc)
    {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        exit(1);
    }

    sql = "create table episodes( id integer primary key,"
          "                       name text, cid int)";

    rc = sqlite3_exec(db, sql, NULL, NULL, &zErr);

    if (rc != SQLITE_OK)
    {
        if (zErr != NULL)
        {
            fprintf(stderr, "SQL error: %s\n", zErr);
            sqlite3_free(zErr);
        }
    }

    sql = "insert into episodes (name,id) values ('Cinnamon Babka2',1)";
    rc = sqlite3_exec(db, sql, NULL, NULL, &zErr);

    if (rc != SQLITE_OK)
    {
        if (zErr != NULL)
        {
            fprintf(stderr, "SQL error: %s\n", zErr);
            sqlite3_free(zErr);
        }
    }

    sqlite3_close(db);
    return 0;
}

我得到了一大堆错误,以下是其中的一些:

LNK2001 unresolved external symbol sqlite3_aggregate_context
LNK2001 unresolved external symbol sqlite3_backup_finish
LNK2001 unresolved external symbol sqlite3_backup_pagecount

我的问题是如何解决这个问题?谢谢!

【问题讨论】:

  • C 不是 C++ si 不是 C!不要为不相关的语言添加标签。这看起来像 C,但如果您使用 C++ 编译器进行编译,更改标签为 C++。

标签: c visual-studio sqlite visual-studio-2015


【解决方案1】:

这涉及到两个项目 - sqlite3.dll 和您正在编写的代码。

主要应用

这不会构建 sqlite3 代码,但需要头文件“sqlite3.h”,并访问定义 sqlite3.dll 中的函数的库文件和从中获取它们的 .dll。

不要添加 .def(描述正在导出的内容)。 不要添加 .c 文件。

  • 在链接器设置中。
  • 一般情况

添加附加库目录,该目录包含sqlite3.lib - 在链接器设置中。 - 在输入 将 sqlite3.lib 添加到 Additional Dependencies。

使用导出构建一个 DLL (sqlite3.dll)

要使用导出构建 DLL,您需要。

  1. 正在导出的文件的描述 (sqlite3.def)
  2. 要编译的文件 (sqlite3.c)

这将创建一个 .lib 文件(导出的描述)和一个 .dll(代码的实现)。

疑难解答

Microsoft : Windows DDK 包含一个名为depends.exe 的应用程序。这可用于查看.DLL.EXE 导入和导出。这有助于您确定 DLL 是否正确构建。

链接器选项 /VERBOSE:LIB (MSDN : /Verbose) 显示链接器正在搜索导入定义的文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 2016-02-05
    • 2016-12-09
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    相关资源
    最近更新 更多