我试着用sqlite和可视化演播室制作一个程序。我已经将sqlite3.def, sqlite3.c, sqlite3.h, sqlite3.dll文件添加到项目目录中。我还在项目设置中将THREADSAFE和SQLITE_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我的问题是如何解决这个问题?谢谢!
发布于 2016-02-21 07:50:53
其中涉及两个项目- sqlite3.dll和您正在编写的代码。
主要应用
这并不构建sqlite3代码,但需要头文件"sqlite3.h",以及对定义sqlite3.dll和.dll中函数的库文件的访问。
不要添加.def (描述正在导出的内容)。不要添加.c文件。
添加其他库目录,在链接器设置中包含sqlite3.lib的目录。-在输入中,向附加的依赖项添加sqlite3.lib。
使用导出构建一个DLL (sqlite3.dll)
若要生成带有导出的DLL,您需要。
这将创建一个.lib文件(导出的描述)和一个.dll (代码的实现)。
故障排除
微软: Windows包括一个名为depends.exe的应用程序。这可以用于查看.DLL或.EXE导入和导出。这可以帮助您识别DLL是否已正确生成。
链接器选项/VERBOSE:LIB (MSDN : /Verbose )显示链接器正在搜索导入定义的文件。
https://stackoverflow.com/questions/35531710
复制相似问题