sjemens / qsqlcipher-qt5 Goto Github PK
View Code? Open in Web Editor NEWQt5 SQL driver plugin for SQLCipher
License: GNU Lesser General Public License v3.0
Qt5 SQL driver plugin for SQLCipher
License: GNU Lesser General Public License v3.0
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);
| ^
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
So where is QSqlDriverPrivate
?
any chance of linking to them? you know, the exact dependencies your project needs to work....
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.
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.
I very appreciate your work, but can't figure out by one sight where SQLCipher comes to work.
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!
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
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();
}
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.
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
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
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?
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>
Opening the .pro in QtCreator and building results in a "Cannot find feature qt_build_config" error
After 701d700, the libtomcrypt
3rd party lib is still attempted to be built despite system-sqlcipher
enabled. Is there any reason why isn't it also omitted?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.