Я пытаюсь создать пользовательскую функцию для базы данных SQLite, которую я использую с Qt.Я нашел информацию о том, как создать функцию, и она, кажется, работает правильно в системе x86.
Вместо этого, похоже, происходит сбой при segfault на устройстве ARM.Вот код, который я написал:
static bool createSQLiteFunctions(const QSqlDatabase& db)
{
// Get handle to the driver and check it is both valid and refers to SQLite3.
QVariant v = db.driver()->handle();
if (!v.isValid() || qstrcmp(v.typeName(), "sqlite3*") != 0) {
LOG_WARNING("Cannot get a sqlite3 handle to the driver.");
return false;
}
// Create a handler and attach functions.
sqlite3* handler = *static_cast<sqlite3**>(v.data());
if (!handler) {
LOG_WARNING("Cannot get a sqlite3 handler.");
return false;
}
// Check validity of the state.
if (!db.isValid()) {
LOG_ERROR("Cannot create SQLite custom functions: db object is not valid.");
return false;
}
if (!db.isOpen()) {
LOG_ERROR("Cannot create SQLite custom functions: db object is not open.");
return false;
}
if (sqlite3_create_function(handler, "_deleteFile", 1, SQLITE_ANY, 0, &_sqlite3DeleteFile, 0, 0))
LOG_ERROR("Cannot create SQLite functions: sqlite3_create_function failed.");
return true;
}
Объект db создается как член другого объекта, который вызывает эту функцию в конструкторе, где установлено соединение с базой данных (может быть несколько экземпляров).создается одновременно, но sqlite3 компилируется с поточно-ориентированной опцией).Кажется, что журнал ошибок не печатается и, но функция sqlite3_create_function выдает ошибку.Если я удаляю вызов createSQLiteFunctions все работает нормально.Любая идея, почему результатом является segfault?Спасибо!