如何使用VC6编译sqlite3

(一)---------------------------------------------------------------------------------------------

引言:

使用VC6编译sqlite-source-3_6_22的编译方法。

一.创建Win32动态链接库工程
1.打开VC新建一个“Win32 Dynamic-Link Library”工程,命名为:sqlite3;

2.在接下来的对话框中选择"An empty DLL project",点 FINISH->OK;

二.将文件添加进工程
将sqlite-source-3_6_22里的文件添加到sqlite3工程中:

1.将sqlite-source-3_6_22下的所有*.C文件添加在工程的Source File中

2.将sqlite-source-3_6_22下的所有*.h文件添加在工程的Source File中

三.按F7进行编译
出现如下错误:

d:/learn/sqlite3/tclsqlite.c(28) : fatal error C1083: Cannot open include file: 'tcl.h': No such file or directory

说明:tclsqlite.c用于生成基于TCL的API,如果要编译,这需要另外下载tcl.h;shell.c用于生成命令行模式的sqlite.exe;

四.删除掉文件tclsqlite.c
再此处去掉文件tclsqlite.c,不让此文件参加编译,按F7重新编译

出现如下错误

fts3_tokenizer.obj : error LNK2005: _sqlite3_api already defined in fts3.obj

rtree.obj : error LNK2005: _sqlite3_extension_init already defined in fts3.obj

rtree.obj : error LNK2005: _sqlite3_api already defined in fts3.obj

五.编译通过方案
1.编译通过的方案一:
添加编译选项SQLITE_CORE 和SQLITE_ENABLE_FTS3

以及SQLITE_ENABLE_RTREE,再次按F7进行编译

 

2.编译通过的方法二:
2.1添加编译选项
如果仅仅添加SQLITE_ENABLE_FTS3和以及SQLITE_ENABLE_RTREE两个编译选项,不添加SQLITE_CORE编译选项;

2.2修改文件sqlite3ext.h
在文件sqlite3ext.h的

#define SQLITE_EXTENSION_INIT1     const sqlite3_api_routines *sqlite3_api = 0;

行下面添加,添加如下内容:

#define EXTERN_SQLITE_EXTENSION_INIT1     extern const sqlite3_api_routines *sqlite3_api = 0;

2.3修改fts3.c和fts3_tokenizer.c两个文件
在fts3.c和fts3_tokenizer.c此2个文件里,将SQLITE_EXTENSION_INIT1修改为EXTERN_SQLITE_EXTENSION_INIT1,具体如下:

#ifndef SQLITE_CORE

  #include "sqlite3ext.h" 

  EXTERN_SQLITE_EXTENSION_INIT1

#else

  #include "sqlite3.h"

#endif

2.4修改文件rtree.c
将rtee.c文件的里,将SQLITE_EXTENSION_INIT1修改为extern const sqlite3_api_routines *sqlite3_api即可,具体如下:

#ifndef SQLITE_CORE

  #include "sqlite3ext.h" 

  extern const sqlite3_api_routines *sqlite3_api; 

#else

  #include "sqlite3.h"

#endif

 

附注说明:
1. rTree.c是建立数据库R树索引的模块;

2. fts3*.c是全文索引模块

 (二)-----------------------------------------------------------------------------------------------------------

1.先从官网获取sqlite-amalgamation-3_6_22.zip;

2.接着从官网获取sqlitedll-3_6_22.zip

下载编译好的DLL,这里有我们需要的sqlite3.def该文件

3.打开VC新建一个“Win32 Dynamic-Link Library”工程,命名为:sqlite3;

4.在接下来的对话框中选择"An empty DLL project",点 FINISH->OK;

5.将sqlite-amalgamation-3_6_22文件夹下的sqlite3.h以及sqlite3.c两个文件复制到工程文件夹下;

       将sqlitedll-3_6_22文件夹下的sqlite3.def该文件复制到工程文件夹下;

6.在工程的Source Files中添加sqlite3.c文件;

7.在工程的Include Files中添加sqlite3.h文件;

8.在工程的Resource Files中添加sqlite3.def文件;

9.针对如下问题:

sqlite3.def : error LNK2001: unresolved external symbol sqlite3_column_database_name

sqlite3.def : error LNK2001: unresolved external symbol sqlite3_column_database_name16

sqlite3.def : error LNK2001: unresolved external symbol sqlite3_column_origin_name

sqlite3.def : error LNK2001: unresolved external symbol sqlite3_column_origin_name16

sqlite3.def : error LNK2001: unresolved external symbol sqlite3_column_table_name

sqlite3.def : error LNK2001: unresolved external symbol sqlite3_column_table_name16

sqlite3.def : error LNK2001: unresolved external symbol sqlite3_table_column_metadata

Debug/sqlite3.lib : fatal error LNK1120: 7 unresolved externals

在菜单【Project】-【Settings…】-【C/C++】标签下的Category【General】下

Preprocessor definitions下:

新增2个编译选项,分别是:

THREADSAFE

SQLITE_ENABLE_COLUMN_METADATA

10.往工程中添加sqlite3.def文件就是为生成sqlite3.lib文件;

sqlite3.lib是与sqlite3.dll动态链接库文件一起提供给软件开发者的;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLite是一个轻量级的嵌入式数据库引擎,可以在各种操作系统上运行。SQLite的开发语言是C,所以在编译SQLite时需要使用C编译器。对于Windows操作系统来说,Visual C++(简称VC)是一个常用的C/C++编译器。 下面是SQLite3编译VC的步骤: 1. 下载SQLite源代码:可以从SQLite官方网站或者其他可信的源代码托管平台上下载最新版本的SQLite源代码。 2. 安装Visual Studio:从Microsoft官方网站上下载并安装Visual Studio,根据个人需要选择相应的版本,比如Visual Studio Community。 3. 打开Visual Studio:打开Visual Studio开发环境,点击“文件”->“新建”->“项目”来创建一个新的项目。 4. 创建一个C/C++项目:在“创建新项目”对话框中,选择“Visual C++”下的“Win32控制台应用程序”,并填写项目名称等相关信息,点击“确定”。 5. 添加SQLite源代码:在“解决方案资源管理器”中,右键点击“源文件”或“头文件”文件夹,选择“添加”->“现有项”,然后找到下载的SQLite源代码文件,选择并点击“添加”。 6. 配置项目属性:右键点击项目名称,选择“属性”来配置项目的属性。在属性窗口中,选择“配置属性”->“C/C++”->“常规”,将“附加包含目录”设置为SQLite源代码所在的目录。 7. 编译项目:点击“生成”->“生成解决方案”来编译项目。如果编译成功,会在输出窗口中显示编译的状态信息。 8. 运行项目:编译成功后,点击“调试”->“开始执行”,运行SQLite应用程序。 这样就可以在Visual C++环境下编译SQLite3库文件了。注意,在编译时需要根据具体的需求进行一些配置,比如选择编译的版本(32位或64位)、编译使用的配置等。在编译完毕后,可以使用生成的SQLite库文件进行开发和部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值