2009-08-18 9 views
2

sqlite3_auto_extensionは、静的にリンクされた拡張機能を登録するのに適しています。sqliteの静的リンク拡張を作成するには?

 

void (*xEntryPoint)(void); 
 

は、コールバックがsqlite3の_延長_のinitのようにすべきではない。しかし、私は、コールバックの宣言を理解していませんか?

 

int sqlite3_extension_init(
    sqlite3 *db, 
    char **pzErrMsg, 
    const sqlite3_api_routines *pApi 
) 
 

答えて

5

なぜコールバックがそのように宣言されているのですか? sqlliteは次のように呼び出します。

xInit(db, &zErrmsg, &sqlite3Apis); 

int my_extension(sqlite3 *db, char **pzErrMsg, const sqlite3_api_routines *pApi) 
{ 
    //register stuff 
    return 0; //ok 
} 

... 
sqlite3_auto_extension((void*)my_extension); 
+0

おそらくABIとの互換性のためです。 –

+0

ドキュメント[こちら](https://sqlite.org/c3ref/auto_extension.html) –

関連する問題