Sephil的自由空间

我的生活,我的梦想
posts - 44,  comments - 96,  trackbacks - 0

搞了我几个小时,终于成功在 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
    声明的函数参数不匹配

enjoy~
   



看清这世界的美丽与残酷



NAILY Soft
Sephil on CNBlogs

 

posted on 2007-12-19 05:59 Sephil 阅读(946) 评论(2)  编辑 收藏 所属分类: Database

FeedBack:
2008-04-16 14:43 | yce [未注册用户]
呵呵,试了一下,不错,谢谢!
  回复  引用    
2008-05-01 19:25 | passengerA [未注册用户]
确实很不错,
非常感谢,
另外请问那些其他的obj文件是如何得到的?
引用的顺序是怎么确定的?
  回复  引用    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-12-19 18:37 编辑过
 
 

<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

与我联系

搜索

 

常用链接

留言簿(7)

我的标签

随笔分类(42)

随笔档案(44)

技术

开源

生活

最新随笔

积分与排名

  • 积分 - 26060
  • 排名 - 1533

最新评论

  • 1. re: Eclipse + Tomcat + WTP 安装笔记
  • 2年之后,照博主所述,除小处微调,还能配置成功,非常感谢。下载到完成,用了大概1小时。 有个小建议,不必删除原来的tomcat及另设端口。当然,另设会少些冲突。 微调部分为发布为webservice...
  • --清风细雨
  • 2. re: Windows Installer MSP 清理工具
  • ITS SO GOOD!
  • --arthuria
  • 3. re: Java陷阱
  • java 1.6也就是6.0里边有个StringBulider比StringBuffer要快,用法和StringBuffer差不多. ResultSet我记得上个项目好像有这个问题,反正是要判断的.这...
  • --Simonwang
  • 4. re: Graffiti Puzzle Game
  • --引用-------------------------------------------------- 23: 可以开放源码吗? --------------------------------...
  • --Sephil
  • 5. re: Graffiti Puzzle Game
  • 你这叫在家休养吗??
  • --巫云

阅读排行榜

评论排行榜