Coder Social home page Coder Social logo

qsqlcipher-qt5's Introduction

Qt SQL driver plugin for SQLCipher ( for Qt 5 )

This branch builds against the Qt version 5.15. To build for previous versions choose from the releases the one that matches the system's Qt version. See https://github.com/sijk/qt5-sqlcipher to build up to Qt 5.5.x

The sources for this plugin are based on the sqlite plugin from qt/qtbase

Dependencies

This plugin is using the SQLCipher for the encryption of database files. SQLCipher is included in the 3rdparty folder, but there is also the option to use the system's library. The required libraries are found by pkg-config. If pkg-config is not available you should edit the qsqlcipher.pro and set the INCLUDEPATH and LIBS variables.

By default, the cryptography backend is provided by libtomcrypt, also included in the 3rdparty folder. There will also be an option to choose some other backend.

Build instructions (without the tests)

git clone https://github.com/sjemens/qsqlcipher-qt5.git
cd qsqlcipher-qt5
mkdir -p build && cd build
qmake ../qsqlcipher.pro
make
make install  # most propably with sudo

Build with system's sqlcipher

git clone https://github.com/sjemens/qsqlcipher-qt5.git
cd qsqlcipher-qt5
mkdir -p build && cd build
qmake ../qsqlcipher.pro CONFIG+=system-sqlcipher
# Or if the sqlcipher library was not built with the ENABLE_COLUMN_METADATA macro
# defined, disable it also for qsqlcipher. Replace the above qmake command with
# qmake ../qsqlcipher.pro  CONFIG+=system-sqlcipher DEFINES+=DISABLE_COLUMN_METADATA 
make
make install  # most propably with sudo

Note: To check if the sqlcipher library was compiled with ENABLE_COLUMN_METADATA use PRAGMA compile_options;

Building and running the tests

git clone https://github.com/sjemens/qsqlcipher-qt5.git
cd qsqlcipher-qt5
mkdir -p build && cd build
qmake CONFIG+="withTests" ../qsqlcipher.pro
make
# in linux
./tests/qsqlcipher_test
# in windows (MSYS2-mingw) both the debug and release
# versions should have been built by default
# so we will check both of them
./tests/debug/qsqlcihper_test
./tests/release/qsqlcihper_test
# Unless you also want to install the tests change to 
# the lib folder
cd qsqlcipher
sudo make install

Tip: A quick way to find if the tested plugin is the newly built and not the one in 'QT_INSTALL_PLUGINS' is to define the QT_DEBUG_PLUGINS and check the loaded library path.

QT_DEBUG_PLUGINS=1 ./tests/qsqlcipher_test

Licenses

For this plugin see LICENSE (LGPLV3)

libtomcrypt (Public domain)

SQLCipher (BSD)

Qt5 libraries (LGPLV3 GPLV2/GPLV3)

qsqlcipher-qt5's People

Contributors

sjemens avatar wrobelda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

qsqlcipher-qt5's Issues

Trying to read the database from an external program

Hello,

I am trying to read a file created with this plugin.
I first tried with the sqlcipher (version "3.15.2 2016-11-28") command on ubuntu 20.04 after calling

sqlite> PRAGMA key='somekey'

after running a SELECT query, I get

Error: file is encrypted or is not a database

trying it with the DB Browser (about dialog below) for SQLite
image
image

It also doesn't seem to accept the key (same one I'm using when opening from Qt). I tried it with the "SQLCipher 3 defaults" and the "SQLCipher 4 defaults".

I am using the Qt 5.12 version with Qt 5.12.10

Do you have any hints here?

Build error with Qt 6.5

Hi,

I get the following error while trying to build with Qt 6.5

qsqlcipher/.qmake.conf:1: Cannot find feature qt_build_config Project ERROR: Could not find feature posix_fallocate. make: *** [Makefile:47: sub-qsqlcipher-make_first] Fehler 3

Any ideas on how to fix this? Or will there be a 6.5 branch in near future?

Thanks!

Getting API misuse error (code 21)when trying to use SQLITE3 funtion sqlite3_prepare_v2 with QSQLCIPHER database

I am creating the QSqlDatabe of QSQLCIPHER and then try to use sqlite3_prepare_v2 function but it is returning error code 21 that us bad parameter or API misuse. I am not able to understand that for QSQLITE the function working ok but not for QSQLCIPHER below is I am pasting my code

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLCIPHER");
auto handle = db.driver()->handle();
auto handle_data = const_cast<void*>(handle.data());
sqlite3* sqlite3_ptr = static_cast<sqlite3*>(handle_data);
sqlite3_stmt* prepared_stmt = nullptr;

auto execute_query = [sqlite3_ptr,
&prepared_stmt](const char* query) mutable -> int {
auto r =
sqlite3_prepare_v2(sqlite3_ptr, query, -1, &prepared_stmt, nullptr);

if (r != SQLITE_OK) return r;

};

if (!QFile::exists("test.db")) {
db.setDatabaseName("test.db");
if (!db.open()) {
QMessageBox::critical(
0,
tr("Cannot open database"),
tr("Unable to establish a database connection.\n"
"This example needs SQLCipher support."),
QMessageBox::Cancel);
return;
}

QSqlQuery query;
execute_query("pragma key = '12345';");
execute_query("create table person (id int primary key, "
              "name varchar(20), address varchar(200), typeid int)");
execute_query("insert into person values(1, 'Alice', "
              "'<qt>123 Main Street<br/>Market Town</qt>', 101)");
execute_query("insert into person values(2, 'Bob', "
              "'<qt>PO Box 32<br/>Mail Handling Service"
              "<br/>Service City</qt>', 102)");
execute_query("insert into person values(3, 'Carol', "
              "'<qt>The Lighthouse<br/>Remote Island</qt>', 103)");
execute_query("insert into person values(4, 'Donald', "
              "'<qt>47338 Park Avenue<br/>Big City</qt>', 101)");
execute_query("insert into person values(5, 'Emma', "
              "'<qt>Research Station<br/>Base Camp<br/>"
              "Big Mountain</qt>', 103)");
//! [Set up the main table]

//! [Set up the address type table]
execute_query(
    "create table addresstype (id int, description varchar(20))");
execute_query("insert into addresstype values(101, 'Home')");
execute_query("insert into addresstype values(102, 'Work')");
execute_query("insert into addresstype values(103, 'Other')");

}
else {
db.setDatabaseName("test.db");
if (!db.open()) {
QMessageBox::critical(
0,
tr("Cannot open database"),
tr("Unable to establish a database connection.\n"
"This example needs SQLCipher support."),
QMessageBox::Cancel);
return;
}

QSqlQuery query;
execute_query("pragma key = '12345';");

{ //===-Test-===
    execute_query("select * from addresstype;");
    if (query.lastError().type() != QSqlError::NoError) {
        QMessageBox::critical(
            0,
            tr("Cannot open database"),
            tr("%1").arg(query.lastError().text()),
            QMessageBox::Cancel);
        return;
    }
}

}

model = new QSqlRelationalTableModel(this);
model->setTable("person");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);

typeIndex = model->fieldIndex("typeid");

model->setRelation(
typeIndex, QSqlRelation("addresstype", "id", "description"));
model->select();
}

mingw32-8.10 64bit build error

E:\Qt\qsqlcipher-qt5\build>qmake ../qsqlcipher.pro
Info: creating stash file E:\Qt\qsqlcipher-qt5\build.qmake.stash

E:\Qt\qsqlcipher-qt5\build>mingw32-make
cd qsqlcipher\ && ( if not exist Makefile C:\Qt\5.15.2\mingw81_64\bin\qmake.exe -o Makefile E:\Qt\qsqlcipher-qt5\qsqlcipher\qsqlcipher.pro ) && mingw32-make -f Makefile
Info: creating stash file E:\Qt\qsqlcipher-qt5\build\qsqlcipher.qmake.stash
mingw32-make[1]: Entering directory 'E:/Qt/qsqlcipher-qt5/build/qsqlcipher'
mingw32-make -f Makefile.Release
mingw32-make[2]: Entering directory 'E:/Qt/qsqlcipher-qt5/build/qsqlcipher'
cd E:/Qt/qsqlcipher-qt5/qsqlcipher/../3rdparty/libtomcrypt && make library CFLAGS=-fPIC
make[3]: Entering directory 'E:/Qt/qsqlcipher-qt5/3rdparty/libtomcrypt'
'uname' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'grep' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'grep' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'{' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
" * cc src/ciphers/aes/aes.o"
process_begin: CreateProcess(NULL, cc -I./src/headers/ -Wall -Wsign-compare -Wshadow -DLTC_SOURCE -Wextra -Wsystem-headers -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wwrite-strings -Wno-type-limits -O3 -funroll-loops -fomit-frame-pointer -DGIT_VERSION="1.18.2" -fPIC -c src/ciphers/aes/aes.c -o src/ciphers/aes/aes.o, ...) failed.
make (e=2): 系统找不到指定的文件。
make[3]: *** [makefile:47: src/ciphers/aes/aes.o] Error 2
make[3]: Leaving directory 'E:/Qt/qsqlcipher-qt5/3rdparty/libtomcrypt'
mingw32-make[2]: *** [Makefile.Release:100: libtomcrypt] Error 2
mingw32-make[2]: Leaving directory 'E:/Qt/qsqlcipher-qt5/build/qsqlcipher'
mingw32-make[1]: *** [Makefile:45: release] Error 2
mingw32-make[1]: Leaving directory 'E:/Qt/qsqlcipher-qt5/build/qsqlcipher'
mingw32-make: *** [Makefile:50: sub-qsqlcipher-make_first] Error 2

E:\Qt\qsqlcipher-qt5\build>

Error in Android build

Building the Android branch I get the following errors:

C:/test/qsqlcipher-qt5-android/android-libs/arm64-v8a/libsqlcipher.a(printf.o): In function `sqlite3_str_vappendf':
printf.c:(.text+0x110): undefined reference to `strchrnul'
C:/test/qsqlcipher-qt5-android/android-libs/arm64-v8a/libsqlcipher.a(crypto_impl.o): In function `sqlcipher_cipher_profile':
crypto_impl.c:(.text+0x3b84): undefined reference to `stderr'
crypto_impl.c:(.text+0x3b88): undefined reference to `stderr'
crypto_impl.c:(.text+0x3b8c): undefined reference to `stdout'
crypto_impl.c:(.text+0x3b90): undefined reference to `stdout'
C:/test/qsqlcipher-qt5-android/android-libs/arm64-v8a/libcrypto.a(cryptlib.o): In function `OPENSSL_showfatal':
cryptlib.c:(.text+0x28): undefined reference to `stderr'
cryptlib.c:(.text+0x30): undefined reference to `stderr'
C:/test/qsqlcipher-qt5-android/android-libs/arm64-v8a/libcrypto.a(ui_openssl.o): In function `open_console':
ui_openssl.c:(.text+0x68): undefined reference to `stdin'
ui_openssl.c:(.text+0x6c): undefined reference to `stdin'
ui_openssl.c:(.text+0x9c): undefined reference to `stderr'
ui_openssl.c:(.text+0xa0): undefined reference to `stderr'
C:/test/qsqlcipher-qt5-android/android-libs/arm64-v8a/libcrypto.a(ui_openssl.o): In function `close_console':
ui_openssl.c:(.text+0x374): undefined reference to `stdin'
ui_openssl.c:(.text+0x378): undefined reference to `stdin'
ui_openssl.c:(.text+0x3a0): undefined reference to `stderr'
ui_openssl.c:(.text+0x3a4): undefined reference to `stderr'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:75: plugins\sqldrivers\libqsqlcipher.so] Error 1

NDK version: 21.3.6528147
QT: 5.12.9
Same error with both Windows and Linux host

Error does not show with armeabi-v7a architecure, so it seems related to shared libraries for arm64-v8a or incompatible NDK used for build that libraries.

On the other hand, by using the Android-5.15 branch, the build is successfull for both ABI using QT 5.15 but fails with QT 5.12 using armeabi-v7a architecture (ok with arm64-v8a):

C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libsqlcipher.a(mem1.o):mem1.c:function sqlite3MemRealloc: error: undefined reference to 'malloc_usable_size'
C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libsqlcipher.a(mem1.o):mem1.c:function sqlite3MemSize: error: undefined reference to 'malloc_usable_size'
C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libsqlcipher.a(os_unix.o):os_unix.c:aSyscall: error: undefined reference to 'mmap64'
C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libsqlcipher.a(rtree.o):rtree.c:function geopolyParseNumber: error: undefined reference to 'atof'
C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libcrypto.a(armcap.o):armcap.c:function OPENSSL_cpuid_setup: error: undefined reference to 'sigfillset'
C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libcrypto.a(armcap.o):armcap.c:function OPENSSL_cpuid_setup: error: undefined reference to 'sigdelset'
C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libcrypto.a(armcap.o):armcap.c:function OPENSSL_cpuid_setup: error: undefined reference to 'sigdelset'
C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libcrypto.a(armcap.o):armcap.c:function OPENSSL_cpuid_setup: error: undefined reference to 'sigdelset'
C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libcrypto.a(armcap.o):armcap.c:function OPENSSL_cpuid_setup: error: undefined reference to 'sigdelset'
C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libcrypto.a(ui_openssl.o):ui_openssl.c:function open_console: error: undefined reference to 'tcgetattr'
C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'signal'
C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'tcsetattr'
C:/test/qsqlcipher-qt5-android-5.15/android-libs/armeabi-v7a/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'tcsetattr'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:75: plugins\sqldrivers\libqsqlcipher.so] Error 1

Same error with Windows and Linux host

Branch 6.0: can't compile under Windows 10

I have compiled well branch 6.0 under macOS. However, I can't do that under Windows 10 with Qt 6.4 (MSVC2019 64bit).

Below is the error when I compile it with the command prompt:

C:\Users\nguyenpham\qsqlcipher-qt5\build>qmake ..\qsqlcipher.pro
Info: creating stash file C:\Users\nguyenpham\qsqlcipher-qt5\build\.qmake.stash

C:\Users\nguyenpham\qsqlcipher-qt5\build>make
cd qsqlcipher\ && ( if not exist Makefile C:\Qt\6.4.0\msvc2019_64\bin\qmake.exe -o Makefile C:\Users\nguyenpham\qsqlcipher-qt5\qsqlcipher\qsqlcipher.pro ) && make -f Makefile
Info: creating stash file C:\Users\nguyenpham\qsqlcipher-qt5\build\qsqlcipher\.qmake.stash
make[1]: Entering directory `C:/Users/nguyenpham/qsqlcipher-qt5/build/qsqlcipher'
make -f Makefile.Release
make[2]: Entering directory `C:/Users/nguyenpham/qsqlcipher-qt5/build/qsqlcipher'
Makefile.Release:77: *** missing separator.  Stop.
make[2]: Leaving directory `C:/Users/nguyenpham/qsqlcipher-qt5/build/qsqlcipher'
make[1]: *** [release] Error 2
make[1]: Leaving directory `C:/Users/nguyenpham/qsqlcipher-qt5/build/qsqlcipher'
make: *** [sub-qsqlcipher-make_first] Error 2

My 2nd attempt is to use Qt Creator. I have loaded the project, do "qmake" then "build". It worked fine with branch 5.15 (using Qt 5.15). However, it can't work with branch 6.0 (using Qt 6.4, MSVC2019 64bit). Below is the error message (about 'lld-link' is not recognized as an internal or external command). Any idea how to fix it?

08:48:55: Running steps for project qsqlcipher...
08:48:55: Configuration unchanged, skipping qmake step.
08:48:55: Starting: "C:\Qt\Tools\QtCreator\bin\jom.exe" 
	cd qsqlcipher\ && ( if not exist Makefile C:\Qt\6.4.0\msvc2019_64\bin\qmake.exe -o Makefile C:\Users\nguyenpham\qsqlcipher-qt5\qsqlcipher\qsqlcipher.pro -spec win32-clang-msvc "CONFIG+=qtquickcompiler" ) && C:\Qt\Tools\QtCreator\bin\jom.exe -f Makefile
	C:\Qt\Tools\QtCreator\bin\jom.exe -f Makefile.Release
	cd C:/Users/nguyenpham/qsqlcipher-qt5/qsqlcipher/../3rdparty/libtomcrypt && nmake -f makefile.msvc CFLAGS=/Ox
	clang-cl -BxC:\Qt\6.4.0\msvc2019_64\bin\qmake.exe -nologo -Zc:wchar_t -Wno-microsoft-enum-value -fms-compatibility-version=19.29.30145 -O2 -Zi -MD -std:c++17 -utf-8 -W3 -w34100 -w34189 -w44996 -E C:\Qt\6.4.0\msvc2019_64\mkspecs\features\data\dummy.cpp 2>NUL >.moc\release\moc_predefs.h
	rc /NOLOGO -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_NO_JAVA_STYLE_ITERATORS -DNDEBUG -DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_LIBTOMCRYPT -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SESSION -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DNDEBUG -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D_WINDLL -fo .obj\release\qsqlcipher_resource.res qsqlcipher_resource.rc
	clang-cl -c -nologo -Zc:wchar_t -Wno-microsoft-enum-value -fms-compatibility-version=19.29.30145 -O2 -Zi -MD -std:c++17 -utf-8 -W3 -w34100 -w34189 -w44996 /Fd.obj\release\qsqlcipher.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_NO_JAVA_STYLE_ITERATORS -DNDEBUG -DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_LIBTOMCRYPT -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SESSION -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DNDEBUG -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D_WINDLL -IC:\Users\nguyenpham\qsqlcipher-qt5\qsqlcipher -I. -IC:\Users\nguyenpham\qsqlcipher-qt5\3rdparty\sqlcipher -IC:\Users\nguyenpham\qsqlcipher-qt5\3rdparty\libtomcrypt\src\headers -IC:\Qt\6.4.0\msvc2019_64\include\QtSql\6.4.0 -IC:\Qt\6.4.0\msvc2019_64\include\QtSql\6.4.0\QtSql -IC:\Qt\6.4.0\msvc2019_64\include\QtCore\6.4.0 -IC:\Qt\6.4.0\msvc2019_64\include\QtCore\6.4.0\QtCore -IC:\Qt\6.4.0\msvc2019_64\include -IC:\Qt\6.4.0\msvc2019_64\include\QtSql -IC:\Qt\6.4.0\msvc2019_64\include\QtCore -I.moc\release -IC:\Qt\6.4.0\msvc2019_64\mkspecs\win32-clang-msvc -Fo.obj\release\ @C:\Users\NGUYEN~1\AppData\Local\Temp\qsql_sqlite.obj.4928.0.jom
	C:\Qt\6.4.0\msvc2019_64\bin\moc.exe -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_NO_JAVA_STYLE_ITERATORS -DNDEBUG -DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_LIBTOMCRYPT -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SESSION -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DNDEBUG -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D_WINDLL --compiler-flavor=msvc --include C:/Users/nguyenpham/build-qsqlcipher-Desktop_Qt_6_4_0_MSVC2019_64bit-Release/qsqlcipher/.moc/release/moc_predefs.h -IC:/Qt/6.4.0/msvc2019_64/mkspecs/win32-clang-msvc -IC:/Users/nguyenpham/qsqlcipher-qt5/qsqlcipher -IC:/Users/nguyenpham/qsqlcipher-qt5/3rdparty/sqlcipher -IC:/Users/nguyenpham/qsqlcipher-qt5/3rdparty/libtomcrypt/src/headers -IC:/Qt/6.4.0/msvc2019_64/include/QtSql/6.4.0 -IC:/Qt/6.4.0/msvc2019_64/include/QtSql/6.4.0/QtSql -IC:/Qt/6.4.0/msvc2019_64/include/QtCore/6.4.0 -IC:/Qt/6.4.0/msvc2019_64/include/QtCore/6.4.0/QtCore -IC:/Qt/6.4.0/msvc2019_64/include -IC:/Qt/6.4.0/msvc2019_64/include/QtSql -IC:/Qt/6.4.0/msvc2019_64/include/QtCore -I. -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\ATLMFC\include" -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" C:\Users\nguyenpham\qsqlcipher-qt5\qsqlcipher\smain.cpp -o .moc\release\smain.moc
	clang-cl -c -nologo -Zc:wchar_t -Wno-microsoft-enum-value -fms-compatibility-version=19.29.30145 -O2 -Zi -MD -utf-8 -w /Fd.obj\release\qsqlcipher.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_NO_JAVA_STYLE_ITERATORS -DNDEBUG -DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_LIBTOMCRYPT -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SESSION -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DNDEBUG -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D_WINDLL -IC:\Users\nguyenpham\qsqlcipher-qt5\qsqlcipher -I. -IC:\Users\nguyenpham\qsqlcipher-qt5\3rdparty\sqlcipher -IC:\Users\nguyenpham\qsqlcipher-qt5\3rdparty\libtomcrypt\src\headers -IC:\Qt\6.4.0\msvc2019_64\include\QtSql\6.4.0 -IC:\Qt\6.4.0\msvc2019_64\include\QtSql\6.4.0\QtSql -IC:\Qt\6.4.0\msvc2019_64\include\QtCore\6.4.0 -IC:\Qt\6.4.0\msvc2019_64\include\QtCore\6.4.0\QtCore -IC:\Qt\6.4.0\msvc2019_64\include -IC:\Qt\6.4.0\msvc2019_64\include\QtSql -IC:\Qt\6.4.0\msvc2019_64\include\QtCore -I.moc\release -IC:\Qt\6.4.0\msvc2019_64\mkspecs\win32-clang-msvc -Fo.obj\release\ @C:\Users\NGUYEN~1\AppData\Local\Temp\sqlite3.obj.4928.15.jom
	C:\Qt\6.4.0\msvc2019_64\bin\moc.exe -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_NO_JAVA_STYLE_ITERATORS -DNDEBUG -DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_LIBTOMCRYPT -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SESSION -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DNDEBUG -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D_WINDLL --compiler-flavor=msvc --include C:/Users/nguyenpham/build-qsqlcipher-Desktop_Qt_6_4_0_MSVC2019_64bit-Release/qsqlcipher/.moc/release/moc_predefs.h -IC:/Qt/6.4.0/msvc2019_64/mkspecs/win32-clang-msvc -IC:/Users/nguyenpham/qsqlcipher-qt5/qsqlcipher -IC:/Users/nguyenpham/qsqlcipher-qt5/3rdparty/sqlcipher -IC:/Users/nguyenpham/qsqlcipher-qt5/3rdparty/libtomcrypt/src/headers -IC:/Qt/6.4.0/msvc2019_64/include/QtSql/6.4.0 -IC:/Qt/6.4.0/msvc2019_64/include/QtSql/6.4.0/QtSql -IC:/Qt/6.4.0/msvc2019_64/include/QtCore/6.4.0 -IC:/Qt/6.4.0/msvc2019_64/include/QtCore/6.4.0/QtCore -IC:/Qt/6.4.0/msvc2019_64/include -IC:/Qt/6.4.0/msvc2019_64/include/QtSql -IC:/Qt/6.4.0/msvc2019_64/include/QtCore -I. -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\ATLMFC\include" -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" C:\Users\nguyenpham\qsqlcipher-qt5\qsqlcipher\qsql_sqlite_p.h -o .moc\release\moc_qsql_sqlite_p.cpp
	clang-cl -c -nologo -Zc:wchar_t -Wno-microsoft-enum-value -fms-compatibility-version=19.29.30145 -O2 -Zi -MD -std:c++17 -utf-8 -W3 -w34100 -w34189 -w44996 /Fd.obj\release\qsqlcipher.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_NO_JAVA_STYLE_ITERATORS -DNDEBUG -DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_LIBTOMCRYPT -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SESSION -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DNDEBUG -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D_WINDLL -IC:\Users\nguyenpham\qsqlcipher-qt5\qsqlcipher -I. -IC:\Users\nguyenpham\qsqlcipher-qt5\3rdparty\sqlcipher -IC:\Users\nguyenpham\qsqlcipher-qt5\3rdparty\libtomcrypt\src\headers -IC:\Qt\6.4.0\msvc2019_64\include\QtSql\6.4.0 -IC:\Qt\6.4.0\msvc2019_64\include\QtSql\6.4.0\QtSql -IC:\Qt\6.4.0\msvc2019_64\include\QtCore\6.4.0 -IC:\Qt\6.4.0\msvc2019_64\include\QtCore\6.4.0\QtCore -IC:\Qt\6.4.0\msvc2019_64\include -IC:\Qt\6.4.0\msvc2019_64\include\QtSql -IC:\Qt\6.4.0\msvc2019_64\include\QtCore -I.moc\release -IC:\Qt\6.4.0\msvc2019_64\mkspecs\win32-clang-msvc -Fo.obj\release\ @C:\Users\NGUYEN~1\AppData\Local\Temp\moc_qsql_sqlite_p.obj.4928.390.jom
In file included from C:\Users\nguyenpham\qsqlcipher-qt5\qsqlcipher\qsql_sqlite.cpp:40:
In file included from C:\Users\nguyenpham\qsqlcipher-qt5\qsqlcipher/qsql_sqlite_p.h:54:
In file included from C:\Qt\6.4.0\msvc2019_64\include\QtSql/qsqldriver.h:7:
In file included from C:\Qt\6.4.0\msvc2019_64\include\QtSql/qtsqlglobal.h:7:
In file included from C:\Qt\6.4.0\msvc2019_64\include\QtCore/qglobal.h:1406:
C:\Qt\6.4.0\msvc2019_64\include\QtCore/qversiontagging.h(90,13): warning: known but unsupported action 'shared' for '#pragma section' - ignored [-Wignored-pragmas]
#    pragma section(".qtversion",read,shared)
            ^
In file included from .moc\release\moc_qsql_sqlite_p.cpp:10:
In file included from .moc\release/../../../../qsqlcipher-qt5/qsqlcipher/qsql_sqlite_p.h:54:
In file included from C:\Qt\6.4.0\msvc2019_64\include\QtSql/qsqldriver.h:7:
In file included from C:\Qt\6.4.0\msvc2019_64\include\QtSql/qtsqlglobal.h:7:
In file included from C:\Qt\6.4.0\msvc2019_64\include\QtCore/qglobal.h:1406:
C:\Qt\6.4.0\msvc2019_64\include\QtCore/qversiontagging.h(90,13): warning: known but unsupported action 'shared' for '#pragma section' - ignored [-Wignored-pragmas]
#    pragma section(".qtversion",read,shared)
            ^
1 warning generated.
	clang-cl -c -nologo -Zc:wchar_t -Wno-microsoft-enum-value -fms-compatibility-version=19.29.30145 -O2 -Zi -MD -std:c++17 -utf-8 -W3 -w34100 -w34189 -w44996 /Fd.obj\release\qsqlcipher.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_NO_JAVA_STYLE_ITERATORS -DNDEBUG -DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_LIBTOMCRYPT -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SESSION -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DNDEBUG -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D_WINDLL -IC:\Users\nguyenpham\qsqlcipher-qt5\qsqlcipher -I. -IC:\Users\nguyenpham\qsqlcipher-qt5\3rdparty\sqlcipher -IC:\Users\nguyenpham\qsqlcipher-qt5\3rdparty\libtomcrypt\src\headers -IC:\Qt\6.4.0\msvc2019_64\include\QtSql\6.4.0 -IC:\Qt\6.4.0\msvc2019_64\include\QtSql\6.4.0\QtSql -IC:\Qt\6.4.0\msvc2019_64\include\QtCore\6.4.0 -IC:\Qt\6.4.0\msvc2019_64\include\QtCore\6.4.0\QtCore -IC:\Qt\6.4.0\msvc2019_64\include -IC:\Qt\6.4.0\msvc2019_64\include\QtSql -IC:\Qt\6.4.0\msvc2019_64\include\QtCore -I.moc\release -IC:\Qt\6.4.0\msvc2019_64\mkspecs\win32-clang-msvc -Fo.obj\release\ @C:\Users\NGUYEN~1\AppData\Local\Temp\smain.obj.4928.453.jom
In file included from C:\Users\nguyenpham\qsqlcipher-qt5\qsqlcipher\smain.cpp:40:
In file included from C:\Qt\6.4.0\msvc2019_64\include\QtSql\qsqldriverplugin.h:7:
In file included from C:\Qt\6.4.0\msvc2019_64\include\QtSql/qtsqlglobal.h:7:
In file included from C:\Qt\6.4.0\msvc2019_64\include\QtCore/qglobal.h:1406:
C:\Qt\6.4.0\msvc2019_64\include\QtCore/qversiontagging.h(90,13): warning: known but unsupported action 'shared' for '#pragma section' - ignored [-Wignored-pragmas]
#    pragma section(".qtversion",read,shared)
            ^
1 warning generated.
1 warning generated.
	lld-link /NOLOGO /DYNAMICBASE /NXCOMPAT /OPT:REF /OPT:ICF /INCREMENTAL:NO /DEBUG /DLL /SUBSYSTEM:WINDOWS /NODEFAULTLIB:LIBCMT /VERSION:6.4 /MANIFEST:embed /OUT:plugins\sqldrivers\qsqlcipher.dll @C:\Users\NGUYEN~1\AppData\Local\Temp\qsqlcipher.dll.4928.47187.jom
'lld-link' is not recognized as an internal or external command,
operable program or batch file.
jom: C:\Users\nguyenpham\build-qsqlcipher-Desktop_Qt_6_4_0_MSVC2019_64bit-Release\qsqlcipher\Makefile.Release [plugins\sqldrivers\qsqlcipher.dll] Error 1
jom: C:\Users\nguyenpham\build-qsqlcipher-Desktop_Qt_6_4_0_MSVC2019_64bit-Release\qsqlcipher\Makefile [release] Error 2
jom: C:\Users\nguyenpham\build-qsqlcipher-Desktop_Qt_6_4_0_MSVC2019_64bit-Release\Makefile [sub-qsqlcipher-make_first] Error 2
08:49:43: The process "C:\Qt\Tools\QtCreator\bin\jom.exe" exited with code 2.
Error while building/deploying project qsqlcipher (kit: Desktop Qt 6.4.0 MSVC2019 64bit)
When executing step "Make"
08:49:43: Elapsed time: 00:47.

Cannot compile with Linux: StringLiterals is not a namespace-name

I have tried to compile branch 5.15, using Qt 5.15.2 but got the error below (just some first pages since it is too many lines). OS is Ubuntu 20.04.

Any solution?

cd qsqlcipher/ && ( test -e Makefile || /home/parallels/Qt/5.15.2/gcc_64/bin/qmake -o Makefile /home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsqlcipher.pro ) && make -f Makefile 
make[1]: Entering directory '/home/parallels/bsg/qsqlcipher-qt5/build/qsqlcipher'
cd /home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/../3rdparty/libtomcrypt && make library CFLAGS=-fPIC
make[2]: Entering directory '/home/parallels/bsg/qsqlcipher-qt5/3rdparty/libtomcrypt'
make[2]: Nothing to be done for 'library'.
make[2]: Leaving directory '/home/parallels/bsg/qsqlcipher-qt5/3rdparty/libtomcrypt'
g++ -c -pipe -O2 -g -std=c++1y -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wall -Wextra -Wvla -Wdate-time -D_REENTRANT -fPIC -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DNDEBUG -DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_LIBTOMCRYPT -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SESSION -DHAVE_POSIX_FALLOCATE=1 -DHAVE_USLEEP=1 -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -I/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher -I. -I/home/parallels/bsg/qsqlcipher-qt5/3rdparty/sqlcipher -I/home/parallels/bsg/qsqlcipher-qt5/3rdparty/libtomcrypt/src/headers -I/home/parallels/Qt/5.15.2/gcc_64/include/QtSql/5.15.2 -I/home/parallels/Qt/5.15.2/gcc_64/include/QtSql/5.15.2/QtSql -I/home/parallels/Qt/5.15.2/gcc_64/include/QtCore/5.15.2 -I/home/parallels/Qt/5.15.2/gcc_64/include/QtCore/5.15.2/QtCore -I/home/parallels/Qt/5.15.2/gcc_64/include -I/home/parallels/Qt/5.15.2/gcc_64/include/QtSql -I/home/parallels/Qt/5.15.2/gcc_64/include/QtCore -I.moc -I/home/qt/openssl-1.1.1g/include -I/home/parallels/Qt/5.15.2/gcc_64/mkspecs/linux-g++ -o .obj/qsql_sqlite.o /home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:41:21: error: ‘StringLiterals’ is not a namespace-name
   41 | using namespace Qt::StringLiterals;
      |                     ^~~~~~~~~~~~~~
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp: In function ‘QString _q_escapeIdentifier(const QString&, QSqlDriver::IdentifierType)’:
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:51:27: error: unable to find string literal operator ‘operator""_L1’ with ‘const char [3]’, ‘long unsigned int’ arguments
   51 |         res.replace(u'"', "\"\""_L1);
      |                           ^~~~~~~~~
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:54:31: error: unable to find string literal operator ‘operator""_L1’ with ‘const char [4]’, ‘long unsigned int’ arguments
   54 |             res.replace(u'.', "\".\""_L1);
      |                               ^~~~~~~~~~
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp: In function ‘int qGetColumnType(const QString&)’:
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:63:21: error: unable to find string literal operator ‘operator""_L1’ with ‘const char [8]’, ‘long unsigned int’ arguments
   63 |     if (typeName == "integer"_L1 || typeName == "int"_L1)
      |                     ^~~~~~~~~~~~
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:63:49: error: unable to find string literal operator ‘operator""_L1’ with ‘const char [4]’, ‘long unsigned int’ arguments
   63 |     if (typeName == "integer"_L1 || typeName == "int"_L1)
      |                                                 ^~~~~~~~
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:65:21: error: unable to find string literal operator ‘operator""_L1’ with ‘const char [7]’, ‘long unsigned int’ arguments
   65 |     if (typeName == "double"_L1
      |                     ^~~~~~~~~~~
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:66:24: error: unable to find string literal operator ‘operator""_L1’ with ‘const char [6]’, ‘long unsigned int’ arguments
   66 |         || typeName == "float"_L1
      |                        ^~~~~~~~~~
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:67:24: error: unable to find string literal operator ‘operator""_L1’ with ‘const char [5]’, ‘long unsigned int’ arguments
   67 |         || typeName == "real"_L1
      |                        ^~~~~~~~~
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:68:32: error: unable to find string literal operator ‘operator""_L1’ with ‘const char [8]’, ‘long unsigned int’ arguments
   68 |         || typeName.startsWith("numeric"_L1))
      |                                ^~~~~~~~~~~~
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:70:21: error: unable to find string literal operator ‘operator""_L1’ with ‘const char [5]’, ‘long unsigned int’ arguments
   70 |     if (typeName == "blob"_L1)
      |                     ^~~~~~~~~
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:72:21: error: unable to find string literal operator ‘operator""_L1’ with ‘const char [8]’, ‘long unsigned int’ arguments
   72 |     if (typeName == "boolean"_L1 || typeName == "bool"_L1)
      |                     ^~~~~~~~~~~~
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:72:49: error: unable to find string literal operator ‘operator""_L1’ with ‘const char [5]’, ‘long unsigned int’ arguments
   72 |     if (typeName == "boolean"_L1 || typeName == "bool"_L1)
      |                                                 ^~~~~~~~~
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp: In member function ‘void QSQLiteResultPrivate::initColumns(bool)’:
/home/parallels/bsg/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:212:63: error: no matching function for call to ‘QSqlField::QSqlField(QString&, QMetaType, const QString&)’
  212 |         QSqlField fld(colName, QMetaType(fieldType), tableName);
      |                                                               ^

[Qt6 branch] pull request

Hi,

I made some changes to make this driver compilable with Qt6 beta4. It passed the test that comes with the code, but I'm not sure if there are other deeper changes needed to be done to make it fully compatible for the upcoming Qt6. Is it possible for the code to be reviewed and changes to be made if required, and if it's good enough to be merged perhaps for Qt6 branch?

Thanks.

[Android branch] undefined reference to stderr, stdin, stdout..

Hi,
I downloaded and compiled your android branch of the plugin and got into errors. The 64 bit versions of the plugin (arm64-v8a and x86_64) can only be linked against shared library of sqlcipher (libsqlcipher.so) instead of the static libsqlcipher.a. Otherwise the linker will throw undefined reference to stderr, stdin, stdout etc.

The minimum required android API for the 64 bit version was set to 23, but I also got the same error messages if I increased the minimum API to 26.

Any pointers on how should I go about to solve this?

TIA.

regards,
Faizol

Compiling under Qt 5.12.4

When compiling /disk3/compile/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp you may find this problem:

/disk3/compile/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp: In constructor ‘QSQLiteDriverPrivate::QSQLiteDriverPrivate()’:
/disk3/compile/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:147:73: error: no matching function for call to ‘QSqlDriverPrivate::QSqlDriverPrivate(QSqlDriver::DbmsType)’
  147 |     inline QSQLiteDriverPrivate() : QSqlDriverPrivate(QSqlDriver::SQLite) {}
      |                                                                         ^
In file included from /disk3/compile/qsqlcipher-qt5/qsqlcipher/qsql_sqlite.cpp:50:
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.12.4/QtSql/private/qsqldriver_p.h:66:5: note: candidate: ‘QSqlDriverPrivate::QSqlDriverPrivate()’
   66 |     QSqlDriverPrivate()
      |     ^~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.12.4/QtSql/private/qsqldriver_p.h:66:5: note:   candidate expects 0 arguments, 1 provided
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.12.4/QtSql/private/qsqldriver_p.h:61:7: note: candidate: ‘QSqlDriverPrivate::QSqlDriverPrivate(const QSqlDriverPrivate&)’
   61 | class QSqlDriverPrivate : public QObjectPrivate
      |       ^~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.12.4/QtSql/private/qsqldriver_p.h:61:7: note:   no known conversion for argument 1 from ‘QSqlDriver::DbmsType’ to ‘const QSqlDriverPrivate&’
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.12.4/QtSql/private/qsqldriver_p.h:61:7: note: candidate: ‘QSqlDriverPrivate::QSqlDriverPrivate(QSqlDriverPrivate&&)’
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.12.4/QtSql/private/qsqldriver_p.h:61:7: note:   no known conversion for argument 1 from ‘QSqlDriver::DbmsType’ to ‘QSqlDriverPrivate&&’
make[1]: *** [Makefile:383: .obj/qsql_sqlite.o] Error 1
make[1]: Leaving directory '/disk3/compile/qsqlcipher-qt5/build/qsqlcipher'
make: *** [Makefile:47: sub-qsqlcipher-make_first] Error 2

To make it compile I edited line 147, so

inline QSQLiteDriverPrivate() : QSqlDriverPrivate(QSqlDriver::SQLite) {}

becomes

inline QSQLiteDriverPrivate() : QSqlDriverPrivate() {}

It then compiles fine.

Manual assembly plugin for android

It was required to use an encrypted base in the mobile application for android..
Do not advise how to build a working plugin for Android arm? Could you post a guide? I urgently need, but I can not really collect
I have problems at the stage of the assembly sqlcipher for arm android :(

P.S. Ubuntu 18.04; Qt5.12; ndk 19; target android 4.1 and higher

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.