首先,sqlite 官方已经有预编译好的DLL下载,如果你不需要特别优化的版本,直接下载官网上的DLL即可。你可以在下载 页面的 “Precompiled Binaries For Windows” 可以找到。
不过你想编译出自己的版本,比如添加优化参数后编译,debug版,或进行一些定制(例如官网这里 有一些预编译宏,允许你定制自己的sqlite),那么你就需要自己编译了。
首先在下载源代码,在页面的第一行就是,如 sqlite-amalgamation-3_6_12.zip ,接着下载编译好的DLL,我们主要是需要这里面的一个 sqlite3.def 文件,因为源代码里没有。一般下拉到 “Precompiled Binaries For Windows” 就可以看到,例如 sqlitedll-3_6_12.zip 。有了这两个压缩包就可以了。
首 先解压 sqlite-amalgamation-3_6_12.zip 到文件夹 sqlite3/,会得到
sqlite3.c,sqlite3.h,sqlite3ext.h 三个文件,然后解压 sqlitedll-3_6_12.zip ,把
sqlite3.def 移动到 sqlite3/ 下面。
打开 visual studio,新建一个空的dll工程,工程名为sqlite3,这样是为了能直接生成名为sqlite3.dll 的dll。然后sqlite3/ 下的4个文件文件夹移动到此工程目录下,即与 sqlite3.vcproj 在同一级。
将 sqlite3.c 添加到工程,具体做法是右击“源文件”,选择“添加->现有项”,浏览到sqlite3.c即可。如下图所示。
然后将sqlite3.def 添加到工程,然后输入给连接器。具体做法是右击工程sqlite3,选择“属性”,在弹出的对话框中选择“连接器->输入”,在“模块定义文件”中输入sqlite3.def,如下图所示。
好,可以开始编译了,右击sqlite3,选择“生成”,结果链接出错,
—— 已启动生成: 项目: sqlite3, 配置: Release Win32 ——
正在编译…
sqlite3.c
正在链接…
sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_database_name
sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_database_name16
sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_origin_name
sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_origin_name16
sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_table_name
sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_table_name16
sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_table_column_metadata
看来sqlite3.def 中定义的这几个导出函数找不到定义,什么原因呢,经过一番google,找到这篇文章 ,需要增加一个预定义宏 SQLITE_ENABLE_COLUMN_METADATA,这个宏是什么意思呢,到官网 去查一下,
SQLITE_ENABLE_COLUMN_METADATA
When this C-preprocessor macro is defined, SQLite includes some
additional APIs that provide convenient access to meta-data about
tables and queries. The APIs that are enabled by this option are:
* sqlite3_column_database_name()
* sqlite3_column_database_name16()
* sqlite3_column_table_name()
* sqlite3_column_table_name16()
* sqlite3_column_origin_name()
* sqlite3_column_origin_name16()
* sqlite3_table_column_metadata()
原来是只有当启用了这个宏后,c代码中才会后这几个函数的定义,OK,在预处理器中添加 SQLITE_ENABLE_COLUMN_METADATA,如下图所示。
再来编译,搞定!
查看原文
分享到:
相关推荐
Visual studio 2012 下 sqlite3的工程文件,生成32或64位的sqlite3库 This page explains how to compile SQLite with Microsoft Visual Studio.NET (aka VS.NET). Download Download and unzip the file sqlite_...
SQLite源码编译,使用visual studio 2008 windows windowsce
本代码是基于windows下在visual studio 2003上编译过的;sqlite的版本为3.6.12。包含整个项目。
SQLite并没有一次性做到位,只有下载这些东西是不能放在vs2010中并马上使用的,下载下来的文件中有sqlite3.c/h/dll/def,还是...就能生成sqlite3.exp和sqlite3.lib文件了,这样在工程中就可以加入lib文件进行编译了。
gcc使用的sqlite3数据库,sqlite3.a ,可以用于Dev-C++,也可以用于Windows下使用gcc编译的程序,sqlite版本是:3270200,还包含了sqlite3.lib库文件,可以用于visual studio。
将sqlite3.h(D:\sqlite-amalgamation-3_6_23.zip)拷贝到C:\Program Files\Microsoft Visual Studio\VC98\Include目录下,这时编译可通过,但链接错误,因为没有LIB文件() 2.启动一个命令行程序,进入VC的安装...
SQLite并没有一次性做到位,只有下载这些东西是不能放在vs2010中并马上使用的,下载下来的文件中有sqlite3.c/h/dll/def,还是...就能生成sqlite3.exp和sqlite3.lib文件了,这样在工程中就可以加入lib文件进行编译了。
win7 64位下用vs2015编译freeswitch,缺少的源码。有curl-7.35.0,jpegsr8d,libpng-1.6.29,pcre-8.34,speex-1.2rc1,sqlite-amalgamation-3190300,tiff-4.0.7,zlib-1.2.11
用于 Visual Studio 的 SQLCipher,构建平台 x32 和 x64 是 Visual Studio 2013 的开源库 [ ] 的一个简单端口。一切都应该开箱即用,以编译 x32 和 x64 版本的 sqlcipher。 版本 sqlcipher-visual-studio是 并已...
实用Visual Studio 2010开发环境,可以重新编译运行
2.sqlite3.7.5以前的sqlite_amalgamation包内包括shell.c,sqlite3.c,sqlite3.def,sqlite3.h,sqlite3ext.h五个文件,可在VS环境下编译生成sqlite3.lib和sqlite3.dll,具体编译设置过程参看网上文献:...
visual studio 2013下成功编译Sqlite3.8.8加密封装完整包,包括sqlite和支持库全部源码。
简单整合32位SQLite跟64位SQLite,项目属性设置为anycpu的时候不会再有烦人的编译平台不同的提示,sqlite会自动根据系统的位数,而选择相应的版本。 同时还阔以解决System.DllNotFoundException: 无法加载 DLL...
SQLite 3.25 完整使用示例 DEMO 演示(纯C代码); 请用Visual Studio 2015编译; 内含SQLite 3.25 DLL,头文件 和 链接用的 LIB文件(sqlite3.lib 61KB), 采用动态链接方式使用官方DLL。
sqlite当多线程操作时,会有一定概率损坏;此工具可以修复数据库,把有问题的记录自动修复或移除。用Visual Studio2019开发,内含sqlite3安装包,可以直接查看代码,也可以直接使用编译好的文件测试。
Mono.Security.dll,MySql.Data.dll,Npgsql.dll,nunit.framework.dll,Oracle.DataAccess.dll,Pervasive.Data.SqlClient.dll,System.Data.SQLite.DLL,VistaDB.NET20.dll,Microsoft.VisualStudio.Debugger...
编译环境:详情可参考“Visual Studio 2019 (vs2019) C++ 环境配置GDAL” GDAL-3.8.2,PROJ-9.1.0,SQLite-3.44.2,tiff-4.6.0,curl-8.4.0_6-x86以及跨平台编译工具CMake-3.28.0。 本资源仅包括gdal3.5.2资源以及...
Microsoft.VisualStudio.DebuggerVisualizers.dll Mono.Security.dll Moq.dll Moq.Silverlight.dll MySql.Data.dll Npgsql.dll nunit.framework.dll Oracle.DataAccess.dll Pervasive.Data.SqlClient.dll System....
* c++ 类可扩展,继承 CHttpHandle,很容易实现动态页面。 * 支持 multipart/form-data 格式的表单上传文件。 * 使用map, string> 存放表单、URL 参数等。... * 内有demo程序,在visual studio 2008 下编译通过。
调试原来的工程,由于在其中引用了“SQLite”的32位的dll,导致在64为位下程序无法运行(但是编译可以通过) 后来通过修改工程文件(.csproj),在其中设置引用的条件,解决了问题 打开引用了SQLite的工程(例如叫做...