如何在VS 2003下编译sqlite
作者:林轩 来源:www.sqlite.com.cn
下载
下载 sqlite_source.zip 文件并解压缩. 注意不要下载 .tar.gz 格式压缩的文件,因为它缺少Windows平台所需要的预编译头文件.
创建一个 DLL 工程
1. 文件 > 新建 > 工程
2. 选择创建一个 Visual C++ Win32工程.
3. 选择 "Win32 Project" 工程模版.
4. 输入工程的名字,然后点击完成.
5. 在工程的向导页中选择工程的类型为 "Win32 DLL",并且把创建一个空项目的复选框钩上. 单击完成,这样你就创建了一个空的 DLL 工程.
7. 工程 > 添加现有项
8. 把你解压出来的除去 tclsqlite.c 和 shell.c 两个文件之外的所有 .c 和 .h 文件添加到工程中去.
注意:如果你添加了tclsqlite.c和shell.c文件,则你必须要添加预定义宏 NO_TCL:
a) 点击工程 -> 属性,转到 C/C++ 项然后选择预处理器
b) 在预处理器定义中加上 NO_TCL 并以分号分隔
Make a .DEF file
9. 把源代码包中的 .def 文件放到工程所在的目录中. 该文件在 2.x.x 版的时候叫 sqlite.def. 在 3.0.x 版之后改为 sqlite3.def.
11. 选择 工程 > 属性中的链接器,然后找到"输入"这一项. 在 "模块定义文件" 中输入 sqlite[3].def. 注意: 你需要在 Debug 和 Release 中都输入该项才行.
注意: 为了生成其它程序链接 sqlite[3].dll 的 lib 文件,你需要添加一个生成后事件. 在工程的属性中找到生成事件这一项,然后在生成后事件中的命令行里加上"LIB /DEF:<path>/sqlite[3].def",记得这也是要在 debug 和 release 中都要写上的,命令行中的 <path> 就是sqlite[3].def所在的绝对路径.
在编译 3.3.7 版的时候(也许其它的版本也需要),还需要做一个额外的步骤:
把工程的当前目录添加到项目的附加包含目录当中,具体的做法是:
在工程 > 属性的 C/C++ 选项中的 "常规",然后在 "附加包含目录中" 输入 "."(一个点表示当前目录).
12. 编译!
VS 2003的工程文件包
如何编译 sqlITE.EXE 命令行程序
如果想编译出 sqlite.exe 命令行程序,则需要做一些设置上的改变. 首先创建工程的时候应该选择"Win32 控制台程序". 然后在往工程里添加文件的时候把 shell.c 也添加进去. 并且不要在加入 .DEF 文件.
EXPORTS sqlite_open sqlite_close sqlite_exec sqlite_last_insert_rowid sqlite_error_string sqlite_interrupt sqlite_complete sqlite_busy_handler sqlite_busy_timeout sqlite_get_table sqlite_free_table sqlite_mprintf sqlite_vmprintf sqlite_exec_printf sqlite_exec_vprintf sqlite_get_table_printf sqlite_get_table_vprintf sqlite_freemem sqlite_libversion sqlite_libencoding sqlite_changes sqlite_create_function sqlite_create_aggregate sqlite_function_type sqlite_user_data sqlite_aggregate_context sqlite_aggregate_count sqlite_set_result_string sqlite_set_result_int sqlite_set_result_double sqlite_set_result_error sqliteMalloc sqliteFree sqliteRealloc sqlite_set_authorizer sqlite_trace sqlite_compile sqlite_step sqlite_finalize sqlite_progress_handler sqlite_reset sqlite_last_statement_changes