Ho provato a collegare staticamente a sqlite3 senza esito positivo. Sto usando l'intestazione "etc.c.sqlite3" e la fusione sqlite3. Per creare il file .lib ho provato sia VC++ che MinGW-gcc, entrambi compilano correttamente il file sorgente, ma entrambi generano il formato oggetto COFF (optlink, che utilizza DMD, funziona con OMF). Dopo aver letto un sacco di post su 'digitalmars.D', ho provato diverse soluzioni.Collegamento statico di SQLite con DMD (Windows x86)
cercato di convertire i file lib creato con GCC, ha portato in simboli non definiti quali __divdi3 e __muldi3, non è stato in grado di risolvere questo problema.
provato anche questo per convertire il file sqlite3.o a * .obj, e poi usare 'LIB.EXE' digitalmars - senza successo così
Tentare objconv su un VC++ lib generato fallisce perché: "SQLite lib è una libreria di importazione"
- Se scarico la DLL precompilata da sqlite.org e uso IMPLIB, genera al file di ib, ma il nome storpiatura non sembra corrispondere, perché anche se mi collego con la libreria statica, ricevo ancora gli stessi errori SQLite (ad esempio, non definiti simbolo
_sqlite3_open
,_sqlite3_errmsg
,_sqlite3_close
...
Se uso coffimplib sul VC++ file di libreria creata, il programma genera un file di quasi vuoto (~ 2 KB), che contiene solo spazzatura (cioè senza simboli a tutti e solo i valori per lo piu 'Null').
Se faccio lo stesso con la libreria creata da GCC, coffimplib si lamenta di "non una libreria di importazione" e non viene generato alcun file di libreria convertito.
Se uso DMC per compilare l'amalgama sqlite3, la compilazione fallisce lamentando tonnellate di errori. Quindi eccomi, bloccato nel nulla, qualcuno ha qualche idea o consiglio su cosa potrebbe risolvere questo?
NOTA: non desidero utilizzare una DLL, ma collegamento statico con sqlite (per problemi di dimensioni eseguibili).
Quali errori si ottiene con il compilatore C? –
Tonnellate e tonnellate. Richiederebbe troppo per risolverli tutti, con tutti i tipi di errori (ad esempio cast illegale, identificatore sconosciuto) –
Ho scaricato e provato DMC; sembra che gli errori siano causati da bug nei file di intestazione di Windows forniti con DMC. –