ho compilato motore di database sqlite3 da sqlite3.c con BCC 55 utilizzando il seguente comando:Collegamento sqlite3.obj emette uunsatisfied avanti errori dichiarazioni
bcc32.exe -jb -O2 -w- -K -c -6 -u- sqlite3.c
Il file sqlite3.obj corretta è stato generato. Ma una volta che provo a collegarlo nella mia richiesta di Delfi in questo modo:
unit unt_SQLite3;
interface
uses
Windows;
implementation
{$LINK 'sqlite3.obj'}
end.
Ottengo i seguenti errori:
[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'
Perché è necessario per implementare le funzioni di runtime in puro Pascal di Borland C++ (o asm)? Non sono direttamente collegati quelli nell'obj? Alcuni di questi sono già implementati in System.pas ma il compilatore si lamenta ancora?
Il razionale dietro a fare questo mysqlf invece di utilizzare SynSQLite3 o DIXml è il seguente:
SynSQLite3 supporta 3.7.8 (non vedo le ultime 3.7.9)
manca SynSQLite3 alcune dichiarazioni come sqlite3_trace, sqlite_open_v2, ecc
SynSQLite2 è circa 18 volte più lento DIXml 2.4.0 in conseguenti 20 000 operazioni passo
DISQLite3 è pagato
DISQLite 2.4.0 è veloce fa 20000 operazioni passo in 260ms, ma non supporta DXE2
DISQLite 3.0.0 e 3.1.0 supportano DXE2 ma sono circa 8 volte più lento di 2.4.0
Sono un ragazzo molto curioso e cerco sempre di codificare il più vicino possibile al metallo.
Complimenti agli sviluppatori SynSQLite3 e DISQLite3 - davvero un buon lavoro doen finora
Alla fine ho finito per scegliere SynSQLite3 perché:
E 'open source
E 'molto ben documentato
ho imparato a ricompilare sqlite3.obj me stesso e lasciare solo gli switch di compilazione necessarie per le caratteristiche di cui ho bisogno
posso avere la versione aggiornata 3.7.9 versione legata
Con la sintonia fine ultimo 3.7 0,9 obj ho raggiunto la velocità di DISQLite3
il ragazzo DISQLite3 non ha nemmeno un indirizzo email sul suo sito di scrivere (solo una mailing list), dove i ragazzi SynSQLite3 rispondono a SO sullo stesso ora.Questo ha senso quando si sceglie una lib piuttosto che un'altra. Le prestazioni e il prezzo non sono tutto.
P.S. Il mio sqlite3.obj è temporaneamente disponibile per il download e il test here
Linker. Il compilatore non si preoccupa di ciò, fa il linker. – OnTheFly
@user no, questo è il momento della compilazione quando viene eseguita la dcu –
@DavidHeffernan, non vero. – OnTheFly