2013-08-24 25 views
2

我需要构建“你是不是认为这个?”功能到我的网站。我正在使用sqlite3,并了解到我可以使用spellfix模块通过levenstein对表进行排序。编译sqlite3的spellfix

我下载source code of sqlite3和编译spellfix.c(这是内部/外部/其它/)这样的:

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

它successfuly编译,但是当我将其加载到sqlite的:

sqlite> .load ./spellfix 

我得到这个错误:

Error: ./spellfix: undefined symbol: sqlite3_extension_init 

我真的很少有关于编译c的知识程式。我在编译或其他事情时发生了一些错误吗?我该怎么办?

回答

2

似乎缺少sqlite初始化函数。这里有一个讨论http://sqlite.1065341.n5.nabble.com/SQLite-version-3-7-16-td67776.html

我在顶部添加了以下代码。

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); 
} 

此外,还需要以下,因为我无法在标题为sqlite3_stricmp功能拉而不产生额外的问题:

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

,需要这样太:

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

然后编译并似乎正常工作。

+0

哪些代码是你添加这些扩展的?它是spellfix吗? –