#include <sqlite3ext.h>
...
QVariant v = metaDataBase.driver()->handle();
if (v.isValid() && qstrcmp(v.typeName(), "sqlite3*")==0) {
sqlite3 *handle = *static_cast<sqlite3 **>(v.data());
if (handle != 0) {
int res = sqlite3_enable_load_extension(handle,1);
if (res == SQLITE_OK) {
res = sqlite3_load_extension(handle,"libSqliteIcu.so",0,0);
if (res == SQLITE_OK) qDebug() << "Sqlite3 loaded ICU extension sucessfully";
else qDebug() << "Sqlite3 failed loading ICU extension";}
else qDebug() << "Sqlite3 failed enabling load extension";}}
,结果是
'sqlite3_api'未在此范围内声明
表示
行res = sqlite3_load_extension(handle,"libSqliteIcu.so",0,0);
如何使它工作?
sqlite3ext.h
中的注释说:
这个头文件定义了SQLite接口希望作为扩展导入的共享库一个SQLite实例。打算加载的共享库作为SQLite的扩展应该#包含这个文件,而不是sqlite3.h .
您的应用程序不是共享库。要使其工作,只需使用sqlite3.h
。