标签:style class blog http tar ext
废话就不多说了,直接进入主题。1、进入http://sqlite.org/download.html下载sqlite-amalgamation-3071300.zip和sqlite-dll-win32-x86-3071300.zip,解压;
2、创建一个空的win32 dll项目,将解压缩的文件添加进来,进行编译,没有报错,但是查看编译目录,发现只是生成了sqlite3.dll而不见sqlite3.lib文件;
3、项目属性--配置属性--连接器--输入--模块定义文件,添加sqlite3.def,返回再次编译,发现编译器报如下错误:
正在链接...
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_rtree_geometry_callback
sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_table_column_metadata
D:\HHTDEV\C++\Sqlite\Debug\sqlite3.lib : fatal error LNK1120: 8 个无法解析的外部命令
解决办法,项目属性--配置属性--C/C++ -- 预处理器 -- 预处理器定义--预处理器定义,添加SQLITE_ENABLE_COLUMN_METADATA,
再次编译时,还是报错,sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_rtree_geometry_callback,同样是缺少一个宏定义,
项目属性--配置属性--C/C++ -- 预处理器 -- 预处理器定义--预处理器定义,添加SQLITE_ENABLE_RTREE,
再次编译,没有问题。
另一个解决办法是,在sqlite3.c文件添加如下宏定义,
//add two micro
#define SQLITE_ENABLE_RTREE
#define SQLITE_ENABLE_COLUMN_METADATA
以上两个方法是等效的。看个人习惯了。
4、提供另外一种方法来生成lib文件:
想将sqlite3加入到我的项目中来,但是根据源代码生成sqlite3.dll和sqlite3.lib太麻烦!幸好VC下提供Lib工具,可以根据dll和def文件生成lib文件。具体过程如下:
1)进入VC2008所带的DOS环境下。
2)通过cd命令进入sqlite3.dll和sqlite3.def所在的文件夹。
3)通过下面的命令生成sqlite3.lib。
LIB /MACHINE:IX86 /DEF:sqlite3.def
通过以上步骤即可生成sqlite3.lib文件了!
5、接下来是验证我们生成的动态库是否可用了,
sqlite官网提供了一个例子,我稍作修改如下:
在VS2008下编译出sqlite3.dll和sqlite3.lib,布布扣,bubuko.com
在VS2008下编译出sqlite3.dll和sqlite3.lib
标签:style class blog http tar ext
原文地址:http://blog.csdn.net/cbnotes/article/details/32335475