`
cfeers
  • 浏览: 140108 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

(转)如何在 Delphi 中静态链接 SQLite

阅读更多

如何在 Delphi 中静态链接 SQLite

搞了我几个小时,终于成功在 Delphi 中静态链接了 SQLite (v3.5.4),下一步就是研究加密了,呵呵
中间其实遇到很多问题,今天累了,就不说了,改天补上

1.当然是下载 SQLite 的源代码啦,呵呵,不过记得要是 all in one 的 amalgamation 版本哦
  (修正: amalgamation 并非 all in one, 只是 core code all in one, 源代码里的其他文件也是不能少的!)
2.解压缩,得到3个文件 sqlite3.c sqlite3.h sqlite3ext.h
  然后把 sqlite3.c 编译成 obj 以便在 Delphi 中使用
  要注意的是不要用 VC 编译,要用 Borland 的 C++ 编译器,比如 Delphi 自带的 bcc
  这主要是因为 VC 编译的 obj 是 COFF 格式的,而 Borland 用的 obj 是 OMF 格式
  bcc 编译的命令行: bcc32 -pc -RT- -O -w- -6 -I(bcc32)\include -c sqlite3.c
3.光有 sqlite3.obj 还不够哦,呵呵,因为 sqlite3.c 有链接其他的库
  这里提供所有要用到的 obj 文件 下载
4.现在所有的 obj 文件都准备好了,不过别高兴的太早了,现在只完成了一小部分而已...
  要在 Delphi 中使用这些 obj 中的函数,必须要先声明一下
  先新建个 Unit, 比如 sqlite3.pas, 然后指定链接的 obj 文件,如
    {$L 'OBJ\sqlite3_5_4.obj'}
    {$L 'OBJ\streams.obj'} //duplicato
    {$L 'OBJ\_ftoul.obj'}
    {$L 'OBJ\files.obj'}
  注意顺序哦,呵呵
  然后添加函数声明
  比如要用到 sqlite3_open 方法,在 sqlite 的源代码里声明是这样的
    SQLITE_API int sqlite3_open(
      const char *filename,   /* Database filename (UTF-8) */
      sqlite3 **ppDb          /* OUT: SQLite db handle */
    );
  在 Delphi 中相应的声明为:
    function _sqlite3_open(dbname: PChar; var db: Pointer): Integer; cdecl; external;
  注意调用方式为 cdecl, 函数名要以 _ 开头,否则会找不到
  只是 sqlite3 函数好多哦,呵呵,所以我才说只完成了部分工作嘛...
5.OK,完成了函数声明才算是全部完成
  现在可以正式使用了~
常见问题:
  1.编译时报 Unsatisfied forward or external declaration
    出现这个错误的原因是声明的函数的找不到
    一般来说是因为链接的 obj 文件不全,或者顺序不对
    还有就是声明的函数名称不对,找不到
  2.编译时报 Internal Error: L3576
    声明的函数参数不匹配

分享到:
评论

相关推荐

    delphi静态连接sqlite3.5.4

    标题 "delphi静态连接sqlite3.5.4" 指的是使用 Delphi 开发环境进行编程时,将 SQLite 3.5.4 版本数据库引擎静态链接到应用程序中的技术。Delphi 是一种流行的 Object Pascal 开发工具,广泛用于创建桌面应用程序。...

    DelphiXE控制跨平台数据库SQLite

    要将SQLite集成到Delphi XE项目中,首先需要获取SQLite的动态链接库(DLL)或静态链接库(LIB),并将其添加到项目的库路径中。同时,还需要一个与Delphi兼容的SQLite组件库,例如FireDAC或SQLiteDB,这些库提供了...

    sqlite3.6.15 for delphi

    含DELPHI静态OBJ等组件 支持数据库加密使用 支持API连接 支持ODBC连接 支持密码连接 ODBC下支持SQL格式修改密码 附带使用Delphi的Demo示例 修改密码 pragma password = 888888; 重设为空密码 pragma password = ;...

    Delphi使用Sqlite库的一个封装源码

    2. 配置依赖:确保项目链接了SQLite的动态库或静态库(可能在`lib`目录下)。 3. 创建数据库连接:实例化封装好的SQLite连接类,如TSQLiteConnection,并设置连接字符串。 4. 执行SQL:通过TSQLiteCommand对象,编写...

    sqlite 3.6.12 支持动态\静态引用

    SQLite3Lib.pas 动态\静态引用封装单元 sqlite3_mod_*.dll ODBC SQLITE3 扩展 DLL\OBJ库支持数据库加密使用 支持API连接 支持ODBC连接 支持密码连接 ODBC下支持SQL格式修改密码 附带使用Delphi的Demo示例 修改...

    SQLite加密例子

    在提供的压缩包文件"SQLiteEncry"中,可能包含了示例代码、编译好的库文件或其他相关资源,用于帮助理解如何在Delphi项目中实施SQLite加密。建议仔细阅读和研究这些文件,以便更好地理解和应用上述知识。 总之,...

    DISQLite3_5.26.0_for_D4-XE10.3_x86_Downloadly.ir.rar

    这个压缩包可能是包含编译好的动态链接库(DLL)、头文件、源代码或其他相关资源的集合,以便于开发者在Delphi项目中集成SQLite3数据库支持。 SQLite3是一款轻量级、自包含的数据库管理系统,广泛用于嵌入式应用或...

    SQLite3.6.13 ODBC API For Win32

    SQLite3.6.13 ODBC API For WSQLite3Lib.pas 动态\静态引用封装单元 sqlite3_mod_*.dll ODBC SQLITE3 扩展 DLL\OBJ库支持数据库加密使用 支持API连接 支持ODBC连接 支持密码连接 ODBC下支持SQL格式修改密码 附带...

    SQLite Data Access Components (LiteDAC) V5.0.2_Full Sources

    SQLite Data Access Components (LiteDAC) V5.0.2_Full Sources【5.0.2 09-Dec-21】,含全部源代码。 【SQLite数据访问组件】SQLite数据访问...第二种是使用应用程序中客户端库的静态链接进行直接访问的独特可能性。

    delphi获取编号

    在Delphi中,如果你需要生成连续的序列号,可以使用全局变量或者静态变量配合计数器逻辑。每次需要编号时,递增该变量并返回其值。确保多线程环境下的同步,可以使用`TCriticalSection`或`TMonitor`来避免并发问题...

    SQLite3 6.1.3 ODBC API For Win32

    SQLite3.6.13 ODBC API For WSQLite3Lib.pas 动态\静态引用封装单元 sqlite3_mod_*.dll ODBC SQLITE3 扩展 DLL\OBJ库支持数据库加密使用 支持API连接 支持ODBC连接 支持密码连接 ODBC下支持SQL格式修改密码 ...

    SQLlite例程源码

    在描述中提到的“没有办法使用lib文件”,这可能是指Delphi 7不直接支持链接SQLite的动态链接库(DLL)或静态库(LIB)。在C++或C#等其他语言中,可以直接调用SQLite的库文件进行数据库操作。但在Delphi 7中,开发者...

    使用Delphi创建一个加密的数据库..rar

    在Delphi中,常见的选择有InterBase、Firebird、MySQL或SQLite等。这些DBMS都提供了用于连接和操作数据的API或者数据库组件,如DBExpress或ADO。 1. **数据库连接组件**:在Delphi中,可以使用TDBXConnection...

    我的通讯录 delphi

    在本文中,我们将深入探讨Delphi语言、应用开发基础以及如何使用Delphi来构建一个类似“我的通讯录”这样的实用工具。 Delphi是Embarcadero Technologies公司推出的一种集成开发环境(IDE),它基于Pascal编程语言...

    ASQLite 整合 DISQLite 魔改第一版 最大兼容 支持 D2009-DXE8 和 64 位平台 1

    删除属性 DriverDll,已经启用 SQLite 静态库方式编译并链接,不需携带 dll 使用 DISQlite 的静态库编译,版本 3.8.3,兼容性和稳定性均良好 2017-08-23 插入和更新操作只针对已修改的字段进行处理和提交,提高执行...

    DELPHI做后台的网站源代码

    1、完整DELPHI代码,使用最基本的CGI 2、稍加改动,可以用于ISAPI等 3、后端纯接口,类似RETFUL 4、内置SQLite数据库,稍做修改可以换用其他数据库 5、编译结果是EXE,复制到服务器的CGI目录下后,建议去掉exe扩展名...

    ASQLite 整合 DISQLite 魔改第一版 最大兼容 支持 D2009-DXE8 和 64 位编译平台

    删除属性 DriverDll,已经启用 SQLite 静态库方式编译并链接,不需携带 dll 使用 DISQlite 的静态库编译,版本 3.8.3,兼容性和稳定性均良好 2017-08-23 插入和更新操作只针对已修改的字段进行处理和提交,提高执行...

    ASGSqlite 2009.2.A

    2. 库文件:编译好的动态链接库(DLL)或静态链接库(LIB),用于在项目中引用。 3. 面向对象的组件:可能包含一些可视化组件,如TASGSQLiteConnection、TASGSQLiteTable等,这些组件可以直接拖放到VCL或Lazarus的...

    EhLib 5.2 For Delphi &BCB

    在 Delphi 和 C++Builder 这样的 RAD(快速应用开发)环境中,EhLib 的优势在于它的易用性和灵活性。Delphi 和 C++Builder 基于 Object Pascal 语言,提供了一套完整的 VCL(Visual Component Library)框架,而 ...

    unigui入门教程2(数据库使用)

    本入门教程将着重讲解如何在Unigui中集成和使用数据库。 一、Unigui简介 Unigui的核心理念是提供一种无缝的跨平台开发体验,让开发者能够用相同的代码库创建桌面、Web和移动应用。它支持多种数据库系统,如SQLite、...

Global site tag (gtag.js) - Google Analytics