我曾尝试使用下面的命令编译SQLITE3数据库引擎从sqlite3.c与BCC 55:链接sqlite3.obj发出uunsatisfied向前声明错误
bcc32.exe -jb -O2 -w- -K -c -6 -u- sqlite3.c
生成正确sqlite3.obj文件。但是,一旦我尝试在我的Delphi应用程序这样的链接:
unit unt_SQLite3;
interface
uses
Windows;
implementation
{$LINK 'sqlite3.obj'}
end.
我收到以下错误:
[DCC Error] E2065 Unsatisfied forward or external declaration: '__ftol'
[DCC Error] E2065 Unsatisfied forward or external declaration: '__lldiv'
[DCC Error] E2065 Unsatisfied forward or external declaration: '__llmod'
[DCC Error] E2065 Unsatisfied forward or external declaration: '_localtime'
[DCC Error] E2065 Unsatisfied forward or external declaration: '_strncmp'
[DCC Error] E2065 Unsatisfied forward or external declaration: '_memset'
[DCC Error] E2065 Unsatisfied forward or external declaration: '__llmul'
[DCC Error] E2065 Unsatisfied forward or external declaration: '_malloc'
[DCC Error] E2065 Unsatisfied forward or external declaration: '_free'
[DCC Error] E2065 Unsatisfied forward or external declaration: '_realloc'
[DCC Error] E2065 Unsatisfied forward or external declaration: '_memcpy'
[DCC Error] E2065 Unsatisfied forward or external declaration: '__llumod'
[DCC Error] E2065 Unsatisfied forward or external declaration: '__lludiv'
[DCC Error] E2065 Unsatisfied forward or external declaration: '_memmove'
[DCC Error] E2065 Unsatisfied forward or external declaration: '_memcmp'
[DCC Error] E2065 Unsatisfied forward or external declaration: '__llshl'
[DCC Error] E2065 Unsatisfied forward or external declaration: '__llshr'
[DCC Error] E2065 Unsatisfied forward or external declaration: '_atol'
[DCC Error] E2065 Unsatisfied forward or external declaration: '_strlen'
[DCC Error] E2065 Unsatisfied forward or external declaration: '_qsort'
[DCC Error] E2065 Unsatisfied forward or external declaration: '__llushr'
[DCC Error] E2065 Unsatisfied forward or external declaration: '__turboFloat'
实现了Borland C++纯帕斯卡运行时函数为什么需要(或ASM )? 不能在obj中直接链接吗? 其中一些已经在System.pas中实现,但编译器抱怨?
这样做背后mysqlf而不是使用SynSQLite3或DIXml合理如下:
SynSQLite3支持3.7.8(我没有看到最新的3.7.9)
SynSQLite3失误像sqlite3_trace,sqlite_open_v2等一些声明
SynSQLite2是在随后的20个000步骤操作要比DIXml 2.4.0慢约18倍
DISQLite3支付
DISQLite 2.4.0是快?20000个操作在260ms,但不支持DXE2
DISQLite 3.0.0和3.1.0做支撑DXE2但都是围绕慢8倍比2.4.0更好
我非常好奇,总是试着尽可能接近金属代码。
荣誉给SynSQLite3和DISQLite3开发商 - 真正的好工作DOEN到目前为止
最后,我最终选择SynSQLite3因为:
它是开源的
这是非常有据可查的
我学会了如何重新编译sqlite3.obj自己,只留下需要的编译开关,用于我需要
我可以有更新的3.7.9版本联
随着调整最新3.7的优良特性.9 obj我达到了DISQLite3的速度
DISQLite3的家伙在他的网站上甚至没有写邮件的地址(只是一个邮件列表),SynSQLite3人员在同一小时内在SO中回复。当选择一个库到另一个库时这是有意义的。性能和价格不是一切。
附:我sqlite3.obj是temporaly可供下载和测试here
接头。编译器不关心,链接器。 – OnTheFly 2012-01-01 21:06:37
@user no,这是dcu编译时的编译时间 – 2012-01-01 21:15:05
@DavidHeffernan,不真实。 – OnTheFly 2012-01-01 22:48:24