我曾嘗試使用下面的命令編譯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