特此鸣谢作者 https://blog.csdn.net/qq_37596943/article/details/104058508,本篇一部分内容受他启发
这几天,内心忽然洋溢着用C语言写个游戏配置文件编辑小程序,再配上个sqlite3轻型数据库,多么美好美妙啊,想到这我的内心快乐的歌唱起来,But,程序员的宿敌------“开发环境配置恶魔”却狞笑着说“hehehehehehehehehehehe想的倒美,本宫要不让你产生点去安定医院看门诊的冲动,休想配置成功......”
这一切当然得归功于我们可爱的微软,奋(吃)发(饱)向(了)上(撑),推(的)陈出新。
实际上从sqlite3的C语言操作语法来说,变化并不大,但跟所有的数据库产品一样,驱动的配置变化还是很频繁,先给出连接成功的测试代码
环境:win10 vs2019 sqlite3.31.1
- 先奉上vs2019测试代码 你在网上搜到很多帖子,他们保准告诉你包含sqlite3.h,但是vs2019可不care,他会告诉你“他妈的sqlite3.h是什么东西,老子不看!”
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include <winsqlite/winsqlite3.h> //看这,最关键 int main() { sqlite3* slt; int len; len = sqlite3_open("user", &slt); if (len) { /* fprintf函数格式化输出错误信息到指定的stderr文件流中 */ fprintf(stderr, "Can't open database: %s ", sqlite3_errmsg(slt));//sqlite3_errmsg(db)用以获得数据库打开错误码的英文描述。 sqlite3_close(slt); exit(1); } else printf("You have opened a sqlite3 database named user successfully! "); system("pause"); return 0; }
- 配置n部曲(vs2019)
1.下载sqlite3
注意,这一步坑就开始了-----根据vs版本不同,文件的需求有所不同,先说vs2017,vs2019都需要的(见下图):根据需要你可以选择32位或者64位的连接驱动(连接引擎)文件,但是无论如何:tools里的文件是成功安装sqlite3数据库前提
tools里的文件
32位或64位的扩展文件包含:
用法:笔者是在C盘根目录下建了一个sqlite3文件夹,上述文件全放进去,接下来把这个目录放入环境变量中去
运行命令cmd,输入sqlite3
第一步完成!
槽点1:sqlite3.exe作为一个主程序文件,居然名为tools!那好吧,以后我跟麦当劳店员说,给我来两包番茄酱,那我的袋子里肯定能多两份薯条-----一看sqlite3开发组的语文都是计算机老师教的。
2.用vs安装目录下的lib.exe编译sqlites扩展文件
读到这,你可能会像毛利小五郎那样睁圆眼睛,蹦出一句“纳尼?!!”,没错,找到你的vs2019安装目录,如果你用的是C或者C++语言,并且十分听话的按默认路径安装的vs,那么很可能目录是
C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.24.28314inHostx64x64
上述目录下有个lib.exe,接下来用它编译sqlite3扩展目录下的扩展文件(当然,你需要把sqlite3.dll 和sqlite3.def放到这个文件下)(推荐:你也可以把x64文件夹单独复制出来,再放入两个扩展文件,编译)
----我是单独复制出来的,并且把编译好的sqlite3.lib放入了我的数据库安装目录下,这并无严格限定
运行-cmd
cd C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.24.28314inHostx64x64
或者cd 到你单独复制出来的x64文件夹下面
LIB /MACHINE:IX86 /DEF:sqlite3.def
这样会生成两个文件,其中sqlite3.lib是关键
槽点2:编译操作复杂程度,堪比绝命毒师从康泰克里提取冰毒
第二步完成!
3.vs项目里引入
选中项目(不是解决方案)---属性---链接器---常规----附加库目录,选中存放sqlite3.lib的目录
接下来找到输入---附加依赖项 填写 sqlite3.lib
.......总算完成了,接下来就是运行一段文章开头提到的代码
槽点3:这哪里是连接轻巧方便可爱的sqlite3数据库,这tm简直是在连接北美防空司令部的空情数据库呢,这......
先写到这,达斯维达尼亚,各位