vs下编译sqlite3库
最近要在windows下使用小型数据库,首先想到的就是sqlite。
官网上提供了sqlite3的dll和def文件。
开始想自己编译生成dll和lib文件,虽下载了相关文件。
下载文件(https://www.sqlite.org/download.html):
sqlite-amalgamation-3280000.zip,包含sqlite3的源码;
sqlite-dll-win32-x86-3280000.zip,包含sqlite3的dll动态库和def文件。
步骤:
1,在VS下新建一个空的控制台程序,选择动态库;
2,然后将sqlite3的源码全部添加至工程中;
3,将sqlite3的def文件添加至工程中;
4,项目--属性--链接器--输入--模块定义文件--选择def文件。
5,编译工程,此时只生产dll文件。使用之前的经验,设置忽略导入库的方式,也没有生成lib文件。
最后使用VS的lib.exe程序使用def文件生成的lib文件。
编译过程中遇到的问题:
1,生成的dll库没有导出函数(执行步骤4解决);
2,在odb库使用sqlite3时,会有函数未定义错误,在sqlite3库中加入SQLITE_ENABLE_UNLOCK_NOTIFY宏定义;
3,在编译过程中,会报def中部分函数找不到定义(需要增加宏定义打开函数定义),因暂时用不到,直接在def文件中将报错的函数名删除即可。
另外:def文件修改后,需要重新生成lib文件。
sqlite3的lib文件生成步骤:
1,找到VS安装目录下lib.exe所在路径;
2,打开命令提示符,切换至上述目录;
3,将sqlite3.def文件复制过来;
4,执行命令:lib.exe /DEF:sqlite3.def /machine:IX86
5,lib和exp文件生成在当前目录中,可直接复制使用。