用vc6.0编译wxSqlite3
2011-09-06 14:19
190 查看
wxSqlite3作为wxWidgets的扩展组件用C++语法对Sqlite3的API进行了封装,为Sqlite3的使用提供了方便.
wxSqlit3 虽然实现了Sqlite3的加密接口,但默认下载的二进制文件中确没有实现加密,如果需要加密的Sqlite3,需要我们自己动手编译.
在这里我将wxSqlite3编译成Static lib来使用.注意:wxSqlite3的代码依赖于 Sqlite3. 这里为了方便,我将Sqlite3也编译成Static Lib.
编译步骤如下:
分为两大步:
一. 编译加密的Sqlite3
二. 编译wxSqlite3
最新的 wxSqlite3-1.9.9 相对于以前的版本在加密实现源码部分调整为纯C代码了,这对于编译的步骤来说相当简单了.
一. 编译加密的Sqlite3
1. 下载wxSqlite3-1.9.9.zip后,解压到wxsqlite3-1.9.9
(http://sourceforge.net/projects/wxcode/files/Components/)
2. 下载www.Sqlite.org的sqlite-amalgamation-3_XXXX.zip,将压缩包中的文件全部提取到 wxsqlite3-1.9.9\sqlite3\secure\src\codec-c 下(写这篇文章时用的版本是3.6.23.1).
编辑 sqlite3.def , 添加 下面两个函数导出
sqlite3_rekey
sqlite3_key
3. 打开VS,新建一个"static lib",工程名为"Sqlite3Encrypt",保存到"wxsqlite3-1.9.9\sqlite3"下.
4. 导入文件:只要单纯的导入 sqlite3secure.c 这个文件就好了.
5. 设置工程属性: (为方便使用 将Sqlite3的输出调整到wxSqlite3工程的输出目录中).在这一步中,分为Debug与Release版.( 可以通过新建工程时建一个DLL工程,这样就内置了两个版本的配置,然后再将"常规->配置类型"设置为"静态库(lib)"就可以了.)
常规->输出目录:
"..\..\lib\vc_lib"
C/C++->预处理->预处理器定义:
SQLITE3ENCRYPT_EXPORTS
SQLITE_ENABLE_FTS3
SQLITE_ENABLE_FTS3_PARENTHESIS
SQLITE_ENABLE_RTREE
SQLITE_SECURE_DELETE
SQLITE_SOUNDEX
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_HAS_CODEC
CODEC_TYPE=CODEC_TYPE_AES128
C/C++->输出文件->程序数据库文件名:
"..\..\lib\vc_lib\Sqlite3EncryptD.pdb" //Debug版
"..\..\lib\vc_lib\Sqlite3Encrypt.pdb"
//Release版
管理员->输出文件:
$(OutDir)\$(ProjectName)D.lib //Debug版
$(OutDir)\$(ProjectName).lib //Release版
6. 编译生成 Sqlite3EncryptD.lib,Sqlite3Encrypt.lib
二. 编译wxSqlite3.
wxSqlite3的编译需要wxWidgets库.去http://www.wxwidgets.org/下载安装包默认安装后,进入"wxWidgets-2.9.0\build\msw"下找到VS的工程文件打开后,编译debug与Release版(这两个版本默认是Static lib).
1. 到"wxsqlite3-1.9.9\build"下找到VS的工程文件打开.这里我只编译 "Static Unicode Debug Monolithic Static"与 "Static Unicode Release Monolithic Static" 版.
2. 设置工程属性:
C/C++->常规->附加包含目录:
"C:\wxWidgets-2.9.0\lib\vc_lib\mswud";"C:\wxWidgets-2.9.0\include";..\include;..\sqlite3\include //Debug版
"C:\wxWidgets-2.9.0\lib\vc_lib\mswu";"C:\wxWidgets-2.9.0\lib\include";..\include;..\sqlite3\include //Release版
C/C++->预处理->预处理器定义:
WXSQLITE3_HAVE_METADATA=1 //修改0为1
WXSQLITE3_HAVE_CODEC=1 //修改0为1
SQLITE_HAS_CODEC //添加
3. 编译生成. wxcode_msw28ud_wxsqlite3.lib,wxcode_msw28u_wxsqlite3.lib
使用:
要使用 wxSqlite3,也是需要 wxWidgets库的.
例:
1. 新建一个控制台项目
2. 设置工程属性:
C/C++->常规->附加包含目录:
"C:\wxWidgets-2.9.0\include" \
"C:\wxWidgets-2.9.0\lib\vc_lib\mswud" // Debug版 --- wxWidgets 库
"C:\wxWidgets-2.9.0\lib\vc_lib\mswu" // Release版 /
"??\wxsqlite3-1.9.9\include" // wxSqlite3 include 目录。
链接器->常规->附加库目录:
"C:\wxWidgets-2.9.0\lib\vc_lib";"??\wxsqlite3-1.9.9\lib\vc_lib"; // Debug版
"C:\wxWidgets-2.9.0\lib\vc_lib";"??\wxsqlite3-1.9.9\lib\vc_lib" // Release版
链接器->输入->附加依赖项:
wxcode_msw28ud_wxsqlite3.lib wxbase29ud.lib Sqlite3EncryptD.lib // Debug版
Sqlite3Encrypt.lib wxcode_msw28u_wxsqlite3.lib wxbase29u.lib // Release版
3. 在代码中引用 #include "wx/wxsqlite3.h"
完成~!
wxSqlit3 虽然实现了Sqlite3的加密接口,但默认下载的二进制文件中确没有实现加密,如果需要加密的Sqlite3,需要我们自己动手编译.
在这里我将wxSqlite3编译成Static lib来使用.注意:wxSqlite3的代码依赖于 Sqlite3. 这里为了方便,我将Sqlite3也编译成Static Lib.
编译步骤如下:
分为两大步:
一. 编译加密的Sqlite3
二. 编译wxSqlite3
最新的 wxSqlite3-1.9.9 相对于以前的版本在加密实现源码部分调整为纯C代码了,这对于编译的步骤来说相当简单了.
一. 编译加密的Sqlite3
1. 下载wxSqlite3-1.9.9.zip后,解压到wxsqlite3-1.9.9
(http://sourceforge.net/projects/wxcode/files/Components/)
2. 下载www.Sqlite.org的sqlite-amalgamation-3_XXXX.zip,将压缩包中的文件全部提取到 wxsqlite3-1.9.9\sqlite3\secure\src\codec-c 下(写这篇文章时用的版本是3.6.23.1).
编辑 sqlite3.def , 添加 下面两个函数导出
sqlite3_rekey
sqlite3_key
3. 打开VS,新建一个"static lib",工程名为"Sqlite3Encrypt",保存到"wxsqlite3-1.9.9\sqlite3"下.
4. 导入文件:只要单纯的导入 sqlite3secure.c 这个文件就好了.
5. 设置工程属性: (为方便使用 将Sqlite3的输出调整到wxSqlite3工程的输出目录中).在这一步中,分为Debug与Release版.( 可以通过新建工程时建一个DLL工程,这样就内置了两个版本的配置,然后再将"常规->配置类型"设置为"静态库(lib)"就可以了.)
常规->输出目录:
"..\..\lib\vc_lib"
C/C++->预处理->预处理器定义:
SQLITE3ENCRYPT_EXPORTS
SQLITE_ENABLE_FTS3
SQLITE_ENABLE_FTS3_PARENTHESIS
SQLITE_ENABLE_RTREE
SQLITE_SECURE_DELETE
SQLITE_SOUNDEX
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_HAS_CODEC
CODEC_TYPE=CODEC_TYPE_AES128
C/C++->输出文件->程序数据库文件名:
"..\..\lib\vc_lib\Sqlite3EncryptD.pdb" //Debug版
"..\..\lib\vc_lib\Sqlite3Encrypt.pdb"
//Release版
管理员->输出文件:
$(OutDir)\$(ProjectName)D.lib //Debug版
$(OutDir)\$(ProjectName).lib //Release版
6. 编译生成 Sqlite3EncryptD.lib,Sqlite3Encrypt.lib
二. 编译wxSqlite3.
wxSqlite3的编译需要wxWidgets库.去http://www.wxwidgets.org/下载安装包默认安装后,进入"wxWidgets-2.9.0\build\msw"下找到VS的工程文件打开后,编译debug与Release版(这两个版本默认是Static lib).
1. 到"wxsqlite3-1.9.9\build"下找到VS的工程文件打开.这里我只编译 "Static Unicode Debug Monolithic Static"与 "Static Unicode Release Monolithic Static" 版.
2. 设置工程属性:
C/C++->常规->附加包含目录:
"C:\wxWidgets-2.9.0\lib\vc_lib\mswud";"C:\wxWidgets-2.9.0\include";..\include;..\sqlite3\include //Debug版
"C:\wxWidgets-2.9.0\lib\vc_lib\mswu";"C:\wxWidgets-2.9.0\lib\include";..\include;..\sqlite3\include //Release版
C/C++->预处理->预处理器定义:
WXSQLITE3_HAVE_METADATA=1 //修改0为1
WXSQLITE3_HAVE_CODEC=1 //修改0为1
SQLITE_HAS_CODEC //添加
3. 编译生成. wxcode_msw28ud_wxsqlite3.lib,wxcode_msw28u_wxsqlite3.lib
使用:
要使用 wxSqlite3,也是需要 wxWidgets库的.
例:
1. 新建一个控制台项目
2. 设置工程属性:
C/C++->常规->附加包含目录:
"C:\wxWidgets-2.9.0\include" \
"C:\wxWidgets-2.9.0\lib\vc_lib\mswud" // Debug版 --- wxWidgets 库
"C:\wxWidgets-2.9.0\lib\vc_lib\mswu" // Release版 /
"??\wxsqlite3-1.9.9\include" // wxSqlite3 include 目录。
链接器->常规->附加库目录:
"C:\wxWidgets-2.9.0\lib\vc_lib";"??\wxsqlite3-1.9.9\lib\vc_lib"; // Debug版
"C:\wxWidgets-2.9.0\lib\vc_lib";"??\wxsqlite3-1.9.9\lib\vc_lib" // Release版
链接器->输入->附加依赖项:
wxcode_msw28ud_wxsqlite3.lib wxbase29ud.lib Sqlite3EncryptD.lib // Debug版
Sqlite3Encrypt.lib wxcode_msw28u_wxsqlite3.lib wxbase29u.lib // Release版
3. 在代码中引用 #include "wx/wxsqlite3.h"
完成~!
相关文章推荐
- 多重继承虚基类 vc6.0编译通过
- VC6.0中如何把Debug编译模式修改为Release模式?
- VC6.0中常见的条件编译命令(#ifdef ... #else ... #endif)---指示编译器谁该参与编译
- WIN7 + VC6.0 编译安装openssh
- Jenkins 编译 VC6.0 项目
- VC6.0编译MPI出现重定义问题
- VC6.0下正确编译cybulk的配置,cyapi使用方法
- vc6.0编译生成各种格式文件的作用
- 使用VC6.0编译C++代码的时候报错:fatal error C1071: unexpected end of file found in comment(Mark ZZ)
- boost 1_33_1在VC6.0上的安装、编译、配置
- VC6.0编译驱动程序的工程设置
- 关于Debug和Release之本质区别的讨论~~(主要针对VC6.0和VS2003.net编译工具而言)
- vc6.0编译出错,删除多余的文件,清空重新编译
- QT4.3.3+VC6.0安装编译过程详解
- VC6.0如何编译生成Release或Debug版本?
- 在VC6.0下设置Unicode编译环境
- 使用VC6.0编译C++代码的时候报错:fatal error C1071: unexpected end of file found in comment(Mark ZZ)
- 在VC6.0下设置Unicode编译环境
- VC6.0上成功编译ACE和使用ACE连接自己程序时候的手把手配置方案
- VC6.0编程用到#include <unistd.h>编译时出现的错误及解决方法