在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
中间其实遇到很多问题,今天累了,就不说了,改天补上 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 声明的函数参数不匹配 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论