首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqlite视听演播室2015

问sqlite视听演播室2015
EN

Stack Overflow用户
提问于 2016-02-21 02:46:02
回答 1查看 1.7K关注 0票数 1

我试着用sqlite和可视化演播室制作一个程序。我已经将sqlite3.def, sqlite3.c, sqlite3.h, sqlite3.dll文件添加到项目目录中。我还在项目设置中将THREADSAFE和SQLITE_ENABLE_COLUMN_METADATA添加到Linker -> Input -> Module definition file中的预处理定义和sqlite3.def中。我正在尝试编译以下程序

代码语言:javascript
复制
#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;
}

我犯了很多错误,下面是一些错误:

代码语言:javascript
复制
LNK2001 unresolved external symbol sqlite3_aggregate_context
LNK2001 unresolved external symbol sqlite3_backup_finish
LNK2001 unresolved external symbol sqlite3_backup_pagecount

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

EN

回答 1

Stack Overflow用户

发布于 2016-02-21 07:50:53

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

主要应用

这并不构建sqlite3代码,但需要头文件"sqlite3.h",以及对定义sqlite3.dll和.dll中函数的库文件的访问。

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

  • 在链接器设置中。
  • 总体而言

添加其他库目录,在链接器设置中包含sqlite3.lib的目录。-在输入中,向附加的依赖项添加sqlite3.lib。

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

若要生成带有导出的DLL,您需要。

  1. 导出文件的说明(sqlite3.def)
  2. 要编译的文件(sqlite3.c)

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

故障排除

微软: Windows包括一个名为depends.exe的应用程序。这可以用于查看.DLL或.EXE导入和导出。这可以帮助您识别DLL是否已正确生成。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35531710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档