VC2005编译SQLite,生成WINCE上使用的DLL和Lib

 
  1. 选择创建一个“WIN32智能设备项目”;
  2. 应用程序类型选择:一个空的Dll;
  3. 将sqlite3.5.1的所有源码均加入工程(http://sourceforge.net/project/showfiles.php?group_id=88393 可以下载。最新的则要到官网去下载,一个是sqlitedll-3_6_15.zip,一个是sqlite-amalgamation-3_6_15.zip 。下载完之后,解压放到你的工程目录之下)。注意需要将tclsqlite.c和shell.c、icu.c去掉。其中tclsqlite.c用于生成基于tcl的api,如果要编译,这需要另外下 载tcl.h;shell.c用于生成命令行模式的sqlite.exe,如果是静态库形式则可以选择; icu是 internationalcomponents forunicode,如果需要则需另外下载相关头文件。
  4. 在源文件和头文件种,分别把*.c和*.h文件加入进来。
  5. 选中项目(而不是文件),项目->属性->C/C++->预编译头-> 创建/使用预编译头:  选择不使用预编译头。
  6. 选中项目(而不是文件),项目->属性->链接器->输入-> 模块定义文件:  输入“sqlite3.def”。
  7. 好,可以开始编译了,右击sqlite3,选择“生成”,结果链接出错,

    —— 已启动生成: 项目: sqlite3, 配置: Release Win32 ——
    正在编译…
    sqlite3.c
    正在链接…
    sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_database_name
    sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_database_name16
    sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_origin_name
    sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_origin_name16
    sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_table_name
    sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_table_name16
    sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_table_column_metadata

    看来sqlite3.def 中定义的这几个导出函数找不到定义,什么原因呢,经过一番google,找到这篇文章 ,需要增加一个预定义宏 SQLITE_ENABLE_COLUMN_METADATA,这个宏是什么意思呢,到官网 去查一下,

    SQLITE_ENABLE_COLUMN_METADATA


    When this C-preprocessor macro is defined, SQLite includes some additional APIs that provide convenient access to meta-data about tables and queries. The APIs that are enabled by this option are:

    * sqlite3_column_database_name()
    * sqlite3_column_database_name16()
    * sqlite3_column_table_name()
    * sqlite3_column_table_name16()
    * sqlite3_column_origin_name()
    * sqlite3_column_origin_name16()
    * sqlite3_table_column_metadata()

    原来是只有当启用了这个宏后,c代码中才会后这几个函数的定义,OK,在预处理器中添加 SQLITE_ENABLE_COLUMN_METADATA,如下图所示。


    diyblPic

    再来编译,搞定!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值