VS编译SQLite

    SQLite是一个小型数据库,特别适合于客户端应用程序使用,它的众多好处就不多说了,有兴趣的去搜索。

    话说使用吧。

    我们要使用,就需要调用它,现在一步一步来。

    第一步:上SQLite官网http://www.sqlite.org/下载它的源码,它的源码有两种格式,一种是许多文件都放在一起的,我称之为集成代码包,另一个是很多.c和.h文件,是分开的,我称之为松散代码包。松散代码包对编译的要求比较高,我也没那时间再去研究它的源代码,于是又变懒了,使用集成代码包吧,如下图:

    下载图上标注的代码

    第二步:准备编译,下载下来之后是个ZIP,解开,里面有shell.c、sqlite3.c、sqlite3.h和sqlite3ext.h这么几个文件,其中shell.c我们不需要,其他的都是要用的

    第三步:开始编译,以VS2010为例,打开VS2010,创建一个Win32的DLL空工程,然后把sqlite3.c、sqlite3.h和sqlite3ext.h这三个文件添加到工程中去,要编译出一个DLL,现在它已经能编译出来了,问题是编译出来之后没有导出函数,是不能用的,所以需要一个DEF文件(符号定义文件),这个文件按理来说我们可以自己添加,不过你如果不阅读源代码是添加不了了,我们简单一点,使用官方提供的,这个要另外下载,当然,还是刚才的下载位置,找到SQLite官方为我们提供好的DLL的下载链接,进行下载,如下图:

    下载下来之后解开这个ZIP,里面有个DEF文件,复制到工程目录中去,然后再在VS2010中添加上,下图:

   

    现在有导出函数了,但是编译不能通过,我们需要定义两个宏,他们是:

    SQLITE_ENABLE_COLUMN_METADATA

    SQLITE_ENABLE_RTREE

    把这两个宏添加到工程中去,如下图:

 

     现在编译,就可以通过了

     问题一:你编译Debug版本和Release版本的时候这两个宏要分别进行添加,否则是不行的。

     问题二:编译Release版本的时候记得设置成静态编译,否则在没有VC库的机器上不能正常调用这个DLL。

     第四步:优化处理和调用

     现在,你已经有一个SQLite的DLL了,为了个性化,或者其他要求,你可以添加一个Version资源,然后写上一些个性化的信息,到此为止,你的SQLite的DLL已经编译出来了。我在VS2010下,编译出来的只有601KB,比官方提供的630KB小不少(DLL是越小越好啊),甚至你还可以给它来个数字签名彰显版权(官方不会限制你这么做)。

第五步:成果展示:

    数据库之前,要进行转换,读出来之后要再次进行转换,否则是乱码(貌似和解析XML一样啊)。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Visual studio 2012 下 sqlite3的工程文件,生成32或64位的sqlite3库 This page explains how to compile SQLite with Microsoft Visual Studio.NET (aka VS.NET). Download Download and unzip the file sqlite_source.zip (or sqlite-amalgamation-x_x_x_x.zip). Do not use the .tar.gz files because they have not been pre-processed for use with Windows. Create a starter DLL project File > New > Project. Under Project Types, select Visual C++ Projects and then Win32. Choose the project template "Win32 Project". Give the project a name and click OK. When the "Win32 Application Wizard" appears, choose Application Settings. set the Application Type to DLL and check the box that says "Empty project". Click Finish. You now have a blank DLL project. Add the SQLite files to the project Project > Add Existing Item. Add all the .c and .h files that you unzipped, except for: tclsqlite.c and shell.c. Note: You may add tclsqlite.c and shell.c, but then you have to define the preprocessor-symbol NO_TCL. Click Project -> Properties, navigate to the C/C++-folder and choose "Preprocessor". In the field that says "Preprocessor definitions" add NO_TCL to the existing string, separated by a semicolon. Under "Code Generation" for "Runtime Library" make sure to pick static linking. /MTd (release) or /MTd (debug) Make a .DEF file A .def file should be placed in the project directory. Get the def file by downloading the zipped sqlite DLL file under the "Precompiled Binaries For Windows" in the download page. Add the sqlite[3].def file to the project. Under Project > Properties navigate to the Linker folder and choose "Input". In the field that says "Module Definition File" type sqlite[3].def. NOTE: You have to do this twice, once for the Debug configuration and once for the Release configuration. Compile! The next 3 steps maybe be required by some. I was able to build the DLL and produce a .lib file only following the above 12 steps. for VS 2005. In order to build the lib file so that an application can link against the sqlite[3].dll you will need to add a step to the post-build event. Right click on Project, select Properties, expand Build Events and type "LIB /DEF:\sqlite[3].def" into the Command line field, both for debug and release configurations, where is the location to the file sqlite[3].def. To compile 3.3.7(this may apply to other versions too), I had to do this extra step: Add the project directory to the include path, here's how to do it in details: Under Project > Properties navigate to the C/C++ folder and choose "General", In the field "Additional Include Directories" type "."(a single dot, which is the current directory) Repeat for each configuration (debug/release/Win32/x64). To compile 3.6.14.1 (maybe others too), I also had to: Go to Project > Properties. Open the C/C++ then Preprocessor folder. Add "SQLITE_ENABLE_COLUMN_METADATA" to the list of preprocessor definitions. Repeat for each configuration (debug/release/Win32/x64). How to make the SQLITE.EXE command-line utility There are some slight changes if you wanted to build the sqlite.exe command-line utility, instead of the DLL. To do that, when you're creating the project and you get to the "Win32 Application Wizard", choose "Console Application" instead of "DLL". Then, when you are adding files to the project, also add shell.c. Finally, don't include the .DEF file. The sqllite def for version 2 is. 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值