he recopilado motor de base de datos sqlite3 de sqlite3.c con BCC 55 con el siguiente comando:sqlite3.obj Vinculación emite uunsatisfied hacia adelante declaraciones errores
bcc32.exe -jb -O2 -w- -K -c -6 -u- sqlite3.c
se generó el fichero sqlite3.obj adecuada. Pero una vez que intenta vincular en mi aplicación Delphi como esto:
unit unt_SQLite3;
interface
uses
Windows;
implementation
{$LINK 'sqlite3.obj'}
end.
consigo los siguientes errores:
[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'
¿Por qué se necesita para implementar las funciones de tiempo de ejecución en Pascal pura Borland C++ (o asm)? ¿No se pueden enlazar directamente en el obj? Algunos de ellos ya están implementados en System.pas pero el compilador se queja?
La base científica de esta manera mysqlf en lugar de utilizar SynSQLite3 o DIXml es la siguiente:
SynSQLite3 apoya 3.7.8 (no veo las últimas 3.7.9)
pierde SynSQLite3 algunas declaraciones como sqlite3_trace, sqlite_open_v2, etc.
SynSQLite2 es de alrededor de 18 veces más lento que DIXml 2.4.0 en consiguientes 20 000 operaciones de paso
DISQLite3 se paga
DISQLite 2.4.0 es rápido hace 20000 operaciones de paso de 260ms, pero no es compatible con DXE2
DISQLite 3.0.0 y 3.1.0 hacerlo apoyo DXE2 pero son alrededor de 8 veces más lento de 2.4.0
Soy un tipo muy curioso y siempre trato de codificar lo más cerca posible del metal.
Felicitaciones a SynSQLite3 y DISQLite3 desarrolladores - muy buena doen trabajo hasta ahora
el tiempo me terminaron eligiendo SynSQLite3 porque:
Es de código abierto
Está muy bien documentado
aprendí a recompilar sqlite3.obj mí mismo y dejar sólo los interruptores de compilación necesarios para las funciones que necesito
que puede tener la versión actualizada 3.7.9 vinculado
Con el ajuste fino última 3.7 .9 obj Logré la velocidad de DISQLite3
El chico DISQLite3 no tiene ni siquiera una dirección de correo electrónico en su sitio para escribir (solo una lista de correo), donde los chicos de SynSQLite3 responden en SO en la misma hora.Esto tiene sentido al elegir una lib sobre otra. Rendimiento y precio no son todo.
P. S. Mi sqlite3.obj es provisoriamente disponible para su descarga y prueba here
Enlazador. El compilador no se preocupa por eso, el enlazador sí. – OnTheFly
@user no, este es el tiempo de compilación cuando se hace el dcu –
@DavidHeffernan, falso. – OnTheFly