无法加载 SQLite 扩展

can't load SQLite extension

本文关键字:扩展 SQLite 加载      更新时间:2023-10-16
#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