正在编译sqlite3的拼写修复程序
Compiling spellfix for sqlite3
我需要为我的网站构建"你是故意的吗?"功能。我正在使用sqlite3,并了解到我可以使用spellfix模块通过levenstein对表进行排序。
我下载了sqlite3的源代码,并编译了spellfix.c(位于/ext/misc/内部),如下所示:
gcc -shared -fPIC -Wall -I/tmp/sqlite-src-3071700/ spellfix.c -o spellfix
它编译成功,但当我将它加载到sqlite:中时
sqlite> .load ./spellfix
我得到这个错误:
Error: ./spellfix: undefined symbol: sqlite3_extension_init
我对编译c程序的知识真的很少。是我在编译时犯了什么错误,还是发生了其他事情?我该怎么办?
似乎缺少sqlite init函数。这里有一个讨论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))
然后它进行了编译,似乎运行正常。
相关文章:
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- C ++程序编译错误,找不到/访问文件
- C++程序编译没有问题,但无法运行
- Mongdb C++ 驱动程序编译错误 for document{}.
- 添加类型名会导致程序编译失败
- 将 C 程序更改为 C++ 程序 - 编译错误
- 程序编译,但当分解为函数时实际上不会移动电机
- 如何链接 glib-2.0 库进行 c/c++ 程序编译
- 为什么 gcc 和 clang 为我的程序编译为不同的"const"结果?
- 复数程序编译时的计算方法错误
- qt 命令行应用程序编译
- 程序编译和运行,但一段时间后,它停止使用Typedef关键字在CPP上工作
- QML应用程序编译一个 *form.ui.qml文件,但忽略了关联的.qml文件
- 为什么该程序编译但不显示任何输出
- 分割故障程序编译为共享库,但不静态
- 程序编译,但我认为开关被忽略
- 程序编译后崩溃
- 什么是程序编译中的PIC级别
- 尽管使用不存在的成员,但程序编译
- C++程序编译在 Ubuntu 中失败,但在 MacOSX 中工作