创建SQLite的DLL和LIB

前端之家收集整理的这篇文章主要介绍了创建SQLite的DLL和LIB前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_0@下载源码包两个:

@H_502_0@sqlite-dll-win32-x86-3081101.zip,里面提供了导出sqlite3函数文件sqlite3.def

@H_502_0@主要用于生成LIB文件,确定链接使用

@H_502_0@sqlite-preprocessed-3081101.zip,提供了源码文件,但是删除shell.ctclsqlite3.c文件

@H_502_0@1.新建win32控制台程序,名称sqlite3

@H_502_0@2.选择生成DLL

@H_502_0@3.解压压缩包,将sqlite-preprocessed-3081101文件复制到工程文件夹下(除了shell.c以及tclsqlite.c)

@H_502_0@4.通过添加存在文件,将源码添加到编译项目中

@H_502_0@5设置模块定义文件sqlite3.def,否则生成dll没有对应的lib

@H_502_0@7.添加预定义选项sqlITE_CORE,sqlITE_ENABLE_COLUMN_MetaDATAsqlITE_ENABLE_RTREE,这是sqlite3的宏定义。

@H_502_0@8.F7生成相应的dlllib

@H_502_0@编译小细节:

@H_502_0@指定函数的导出文件sqlite3.defs

@H_502_0@属性》》链接器》》输入》》模块定义文件sqlite3.def),请注意这种情况下,sqlite3.def文件和编译环境平级。

@H_502_0@后果:不会生成sqlite3.lib文件

@H_502_0@指定预编译宏:

@H_502_0@属性》》C/C++》》预处理器》》预处理定义》》

@H_502_0@sqlITE_CORE

@H_502_0@sqlITE_ENABLE_COLUMN_MetaDATA

@H_502_0@sqlITE_ENABLE_RTREE

@H_502_0@后果:

@H_502_0@1>sqlite3.def : error LNK2001: 无法解析的外部符号sqlite3_column_database_name

@H_502_0@1>sqlite3.def :error LNK2001: 无法解析的外部符号sqlite3_column_database_name16

@H_502_0@1>sqlite3.def :error LNK2001: 无法解析的外部符号sqlite3_column_origin_name

@H_502_0@1>sqlite3.def :error LNK2001: 无法解析的外部符号sqlite3_column_origin_name16

@H_502_0@1>sqlite3.def :error LNK2001: 无法解析的外部符号sqlite3_column_table_name

@H_502_0@1>sqlite3.def :error LNK2001: 无法解析的外部符号sqlite3_column_table_name16

@H_502_0@1>sqlite3.def :error LNK2001: 无法解析的外部符号sqlite3_rtree_geometry_callback

@H_502_0@1>sqlite3.def :error LNK2001: 无法解析的外部符号sqlite3_rtree_query_callback

@H_502_0@前面6个函数,必须定义了sqlITE_ENABLE_COLUMN_MetaDATA才能够将函数导出,一般情况下,这些函数,我们可以直接在sqlite3.def文件删除,不导出

@H_502_0@后面2函数,必须定义了sqlITE_ENABLE_RTREE才能够将函数导出,如果我们不适用R树的空间搜索功能,这些函数,我们可以直接在sqlite3.def文件删除,不导出

猜你在找的Sqlite相关文章