2

「これのことですか?」を構築したかったのです。私のウェブサイトへの機能。私は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プログラムのコンパイルに関する知識はほとんどありません。コンパイルで何かミスをしたのでしょうか、それとも何か他のことが起こったのでしょうか? 私は何をすべきか?

4

1 に答える 1

2

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

その後、コンパイルされ、正しく機能しているように見えました。

于 2014-01-21T14:37:42.567 に答える