编译wxsqlite3-4.5.1

文章详细介绍了如何在VS2022环境下编译wxsqlite3-4.5.1,包括设置工程为静态库,处理预处理器定义,解决编译警告以及更改加密算法为AES256。提供了两种方法,一种是手动配置工程,另一种是使用SQLite3Secure_vc16.sln进行批生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译wxsqlite3-4.5.1

1、方法一

  • 用VS2022 建立一个控制台工程sqlite3sec,选项为静态库,不包含预编译头。
  • 把wxsqlite3-4.5.1.zip\wxsqlite3-4.5.1\sqlite3secure\src下所有的文件复制到工程的工作目录sqlite3sec。
  • 把sqlite3.h和sqlite3secure.c加入工程,只添加这两个文件就可以,不要添加其他文件,不用管其他文件报错。
  • 工程配置属性:AllConfigurations->C/C+±>预处理器->预处理器定义,加入: SQLITE_HAS_CODEC=1
    CODEC_TYPE=CODEC_TYPE_AES256 //将默认加密算法ChaCh20变更AES256
  • Batch Build 编译出静态库。 如果出现错误信息,如:This function or variable may be unsafe. Consider using strcat_s instead。可以在sqlite3secure.c开头添加:#define _CRT_SECURE_NO_WARNINGS。或者在“预处理器定义”添加“_CRT_SECURE_NO_WARNINGS”。
    如果出现warning C4267: “函数”: 从“size_t”转换到“unsigned int”。发生 C4267的原因是:在x86上,size_t是Win32上的unsigned int。将size_t作为unsigned int参数传递,这会导致Win64上的截断,在Win64中,size_t为 64 位,而unsigned int仍为 32 位。
    可以忽略此警告,原因是:如果在Win64中进行编译,std::cout<<range_index将解析为接受unsigned__int64的operator<<的重载,因为类型size_t在Win64上就是该类型。 如果采用“debug”和“x86”编译,则不会出现此警告。 可以这样调整:项目属性 ->配置属性->C/C++ ->常规 ->警告登记,设置为“等级2(/W2)”
  • 把sqlite3.h和sqlite3sec.lib 复制即可使用。
#define SQLITE_HAS_CODEC 1
#include <stdio.h>
#include "sqlite3.h"
#pragma comment(lib,"sqlite3sec.lib")
int main() {
	sqlite3* db;
	sqlite3_open("data.db", &db);
	sqlite3_key(db, "123456", 6);
	sqlite3_exec(db, "create table user (id int, name vchar(30))", NULL, NULL, NULL);
	int i = sqlite3_exec(db, "insert into user (id,name) values (333,'quit')", NULL, NULL, NULL);
	printf("i=%d", i);
	sqlite3_close(db);
}

2、方法二

  • 解压缩wxsqlite3-4.5.1.zip后,进入\sqlite3secure\build目录,打开SQLite3Secure_vc16.sln,升级到v143。然后批生成。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值