`
soulmachine
  • 浏览: 112298 次
  • 性别: Icon_minigender_1
  • 来自: 湖北武汉
社区版块
存档分类
最新评论

在Visual Studio 下编译 sqlite3

 
阅读更多

首先,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即可。如下图所示。

undefined


然后将sqlite3.def 添加到工程,然后输入给连接器。具体做法是右击工程sqlite3,选择“属性”,在弹出的对话框中选择“连接器->输入”,在“模块定义文件”中输入sqlite3.def,如下图所示。

undefined

好,可以开始编译了,右击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,如下图所示。

undefined

再来编译,搞定!

查看原文

分享到:
评论

相关推荐

    sqlite3在Visual studio 2012下的编译

    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_...

    window下编译Sqlite3 3.7.13版本

    在Windows环境下编译SQLite3 3.7.13版本是一项技术性的工作,涉及到数据库引擎的源码构建和与Visual Studio版本的兼容性。SQLite3是一个开源的关系型数据库管理系统,因其轻量级、无需服务器进程且能直接嵌入到应用...

    vc++编译sqlite3加密教程

    总的来说,通过本教程,你将学习到如何在VS环境下编译SQLite3的加密版本,以及如何在C++项目中集成和使用这个加密库。这个过程不仅提升了数据安全性,也为开发更安全的应用奠定了基础。在实践中,不断探索和优化编译...

    sqlite3-源码编译-VS2013.zip

    在VS2013中编译SQLite3源码,首先你需要下载SQLite3的源代码。这个zip文件“sqlite3-源码编译-VS2013.zip”应该包含了所有必要的源码和配置文件,确保你可以直接开始编译过程。通常,SQLite3的源码会包含如下几个...

    sqlite3.3.6vc可编译工程

    在“sqlite3.3.6vc”压缩包中,“sqliteworkspace”很可能是一个Visual Studio的工作区文件,它包含了项目设置和配置信息,允许用户直接在Visual Studio环境中打开并编译SQLite源代码。这为开发者提供了极大的便利,...

    SQLite3的VS2013编译工程

    在本项目中,我们关注的是如何在Visual Studio 2013环境下编译SQLite3源代码,生成用于开发的动态链接库(dll)和静态链接库(lib)文件。 首先,为了在VS2013中编译SQLite3,你需要下载SQLite3的源代码。SQLite3的...

    Visual C++访问SQLite

    2. **添加头文件和库**: 在VC++项目中,包含SQLite的头文件,例如`sqlite3.h`,并链接所需的库。如果使用预编译的DLL,确保将其路径添加到项目的搜索目录。 3. **连接数据库**: 使用`sqlite3_open()`函数打开一个...

    windows下编译sqlite.doc

    - 成功编译后,会在项目目录下的Debug目录生成两个重要的文件:动态链接库文件`sqlite3.dll`和引入库文件`sqlite3.lib`。 #### 二、使用动态链接库 **1. 创建测试项目** - 在Visual Studio中新建一个空的“Win32 ...

    sqlite3VC2005编译的源代码

    "sqlite3VC2005编译的源代码"这个标题意味着这是一份使用Microsoft Visual Studio 2005(VC++ 8.0)编译的SQLite3源代码,为那些需要在Windows环境下使用SQLite3并希望进行深入调试或定制的开发者提供了便利。...

    Sqlite3编译及使用示例代码

    4. **配置编译选项**:进入解压后的源码目录,运行`configure`脚本(在Unix/Linux下),或者直接打开解决方案文件(在Windows的Visual Studio项目中)。 5. **编译源码**:使用`make`命令进行编译。这将生成`sqlite...

    编译好的sqlite3 lib链接库

    在压缩包中的“编译好的sqlite3 VC链接库”可能指的是专门为Visual C++编译的版本,这意味着这些库已经针对Microsoft的编译器进行了优化,可以直接在使用Visual Studio的项目中使用。 总的来说,这个压缩包提供了...

    sqlite3release/debug

    2. **添加库到项目**:将解压后的SQLite3库文件(通常为.lib或.dll)复制到你的项目目录下,或者将其路径添加到Visual Studio的“附加库目录”设置中。 3. **链接器设置**:在项目的属性页中,转到“链接器”-> ...

    VS中C++项目所需的sqlite3库

    在Visual Studio(VS)中开发C++项目时,有时我们需要集成第三方库来扩展功能,SQLite3就是一个常用的轻量级数据库引擎。这篇详细的文章将指导你如何在VS项目中配置和使用SQLite3库。 首先,了解SQLite3:SQLite是...

    VS2019下编译完成的GDAL3.0.2+Proj6.3+sqlite3(64位)

    本资源是GDAL 3.0.2版本在Visual Studio 2019环境下编译完成的结果,特别适用于Windows平台上的64位应用程序开发。同时,此压缩包还包含了Proj 6.3,这是一个用于地理坐标系统转换的库,以及sqlite3,一个轻量级的...

    vs2003编译通过的sqlite3.6.12源码

    在给定的资源中,“vs2003编译通过的sqlite3.6.12源码”意味着我们可以获得SQLite数据库引擎的特定版本(3.6.12)的源代码,该版本已经在Windows环境下使用Visual Studio 2003开发工具成功编译过。 Visual Studio ...

    sqlite3已在VS2010编译,并带学习资料及实例

    在VS2010(Visual Studio 2010)环境下编译SQLite3,允许开发者在C++项目中直接集成数据库功能,而无需依赖外部服务器进程。这个压缩包文件包含的内容很可能提供了编译SQLite3所需的源代码、配置文件以及学习资源,...

    使用vs2015编译的sqlite库

    SQLite是一个开源的、轻量级的、...总之,这个压缩包提供的编译好的SQLite库简化了Windows开发者在VS2015环境下集成SQLite到GDAL项目的工作。正确理解和应用这些知识点将有助于顺利地在你的应用程序中实现数据库功能。

Global site tag (gtag.js) - Google Analytics