2013-08-24 2 views
2

J'avais besoin voulu construire "avez-vous voulu dire ceci?" fonctionnalité à mon site Web. J'utilise sqlite3 et j'ai appris que je peux utiliser le module spellfix pour commander des tables via Levenstein.Compiler le correctif pour sqlite3

Je source code of sqlite3 téléchargé et compilé spellfix.c (il est à l'intérieur/ext/Divers /) comme ceci:

gcc -shared -fPIC -Wall -I/tmp/sqlite-src-3071700/ spellfix.c -o spellfix 

Il compile, mais quand je succčs le charger dans SQLite:

sqlite> .load ./spellfix 

I obtiennent cette erreur:

Error: ./spellfix: undefined symbol: sqlite3_extension_init 

J'ai vraiment très peu de connaissances sur la compilation c programmes. Ai-je fait une erreur à propos de la compilation ou quelque chose d'autre est arrivé? Que devrais-je faire?

Répondre

2

Il semble que la fonction d'initialisation sqlite soit manquante. Il y a une discussion ici http://sqlite.1065341.n5.nabble.com/SQLite-version-3-7-16-td67776.html

J'ai ajouté le code suivant en haut.

static int spellfix1Register(sqlite3 *db); 

int sqlite3_extension_init(sqlite3 *db, char ** pxErrMsg, const sqlite3_api_routines *pApi){ 
    SQLITE_EXTENSION_INIT2(pApi); 
    return spellfix1Register(db); 
} 

nécessaire également les points suivants que je ne pouvais pas tirer dans les en-têtes pour la fonction sqlite3_stricmp sans créer de problèmes supplémentaires:

int sqlite3_stricmp(const char *zLeft, const char *zRight){ 
    return strcasecmp(zLeft, zRight); 
} 

et avait besoin cela aussi:

#define SQLITE_CONSTRAINT_NOTNULL  (SQLITE_CONSTRAINT | (5<<8)) 

Ensuite, compilé et semblait fonctionner correctement.

+0

À quel code avez-vous ajouté ces extensions? est-ce spellfix? –

Questions connexes