Hello,
I’m trying to compile SQLCipher to use it in Embarcadero C++Builder the same way in wich I use standard SQLite.
To do this I have installed TLC 8.6.10, Visual Studio 2015 Community edition and OpenSSl (Win32OpenSSL-3_0_2).
I downloaded SQLCipher code from GitHub.
I followed this guide Compiling-SQLCipher.
The compilation fails because some file are missing: shell.c and sqlite3.h.
This is the log:
C:\sqlcipher-master>nmake makefile.msc
Microsoft (R) Program Maintenance Utility Version 14.00.24210.0
Copyright (C) Microsoft Corporation. All rights reserved.
:\Program Files\Tcl86\bin\tclsh.exe .\tool\mkopcodec.tcl opcodes.h > opcodes.c
:\Program Files\Tcl86\bin\tclsh.exe .\tool\mkshellc.tcl > shell.c
:\Program Files\Tcl86\bin\tclsh.exe .\tool\mksqlite3h.tcl . > sqlite3.h
:\Program Files\Tcl86\bin\tclsh.exe .\ext\fts5\tool\mkfts5c.tcl
copy /Y .\ext\fts5\fts5.h .
1 file copiati.
copy /B fts5.h +,,
1 file copiati.
rmdir /Q/S tsrc 2>NUL
mkdir tsrc
for %i in (.\src\crypto.c .\src\crypto_cc.c .\src\crypto_impl.c .\src\crypto_libtomcrypt.c .\src\crypto_nss.c .\src\crypto_openssl.c .\src\crypto.h .\src\sqlcipher.h .\src\alter.c .\src\analyze.c .\src\attach.c .\src\auth.c .\src\backup.c .\src\bitvec.c .\src\btmutex.c .\src\btree.c .\src\build.c .\src\callback.c .\src\complete.c .\src\ctime.c .\src\date.c .\src\dbpage.c .\src\dbstat.c .\src\delete.c .\src\expr.c .\src\fault.c .\src\fkey.c .\src\func.c .\src\global.c .\src\hash.c .\src\insert.c .\src\legacy.c .\src\loadext.c .\src\main.c .\src\malloc.c .\src\mem0.c .\src\mem1.c .\src\mem2.c .\src\mem3.c .\src\mem5.c .\src\memdb.c .\src\memjournal.c .\src\mutex.c .\src\mutex_noop.c .\src\mutex_unix.c .\src\mutex_w32.c .\src\notify.c .\src\os.c .\src\os_unix.c .\src\os_win.c) do copy /Y %i tsrc
C:\sqlcipher-master>copy /Y .\src\crypto.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\crypto_cc.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\crypto_impl.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\crypto_libtomcrypt.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\crypto_nss.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\crypto_openssl.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\crypto.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\sqlcipher.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\alter.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\analyze.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\attach.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\auth.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\backup.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\bitvec.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\btmutex.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\btree.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\build.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\callback.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\complete.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\ctime.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\date.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\dbpage.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\dbstat.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\delete.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\expr.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\fault.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\fkey.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\func.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\global.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\hash.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\insert.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\legacy.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\loadext.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\main.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\malloc.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\mem0.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\mem1.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\mem2.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\mem3.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\mem5.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\memdb.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\memjournal.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\mutex.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\mutex_noop.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\mutex_unix.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\mutex_w32.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\notify.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\os.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\os_unix.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\os_win.c tsrc
1 file copiati.
for %i in (.\src\pager.c .\src\pcache.c .\src\pcache1.c .\src\pragma.c .\src\prepare.c .\src\printf.c .\src\random.c .\src\resolve.c .\src\rowset.c .\src\select.c .\src\status.c .\src\table.c .\src\threads.c .\src\tclsqlite.c .\src\tokenize.c .\src\treeview.c .\src\trigger.c .\src\utf.c .\src\update.c .\src\upsert.c .\src\util.c .\src\vacuum.c .\src\vdbe.c .\src\vdbeapi.c .\src\vdbeaux.c .\src\vdbeblob.c .\src\vdbemem.c .\src\vdbesort.c .\src\vdbetrace.c .\src\vdbevtab.c .\src\vtab.c .\src\wal.c .\src\walker.c .\src\where.c .\src\wherecode.c .\src\whereexpr.c .\src\window.c) do copy /Y %i tsrc
C:\sqlcipher-master>copy /Y .\src\pager.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\pcache.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\pcache1.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\pragma.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\prepare.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\printf.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\random.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\resolve.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\rowset.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\select.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\status.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\table.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\threads.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\tclsqlite.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\tokenize.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\treeview.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\trigger.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\utf.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\update.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\upsert.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\util.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vacuum.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vdbe.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vdbeapi.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vdbeaux.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vdbeblob.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vdbemem.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vdbesort.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vdbetrace.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vdbevtab.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vtab.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\wal.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\walker.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\where.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\wherecode.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\whereexpr.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\window.c tsrc
1 file copiati.
for %i in (.\src\parse.y) do copy /Y %i tsrc
C:\sqlcipher-master>copy /Y .\src\parse.y tsrc
1 file copiati.
for %i in (.\src\btree.h .\src\btreeInt.h .\src\hash.h .\src\hwtime.h .\src\msvc.h .\src\mutex.h .\src\os.h .\src\os_common.h .\src\os_setup.h .\src\os_win.h) do copy /Y %i tsrc
C:\sqlcipher-master>copy /Y .\src\btree.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\btreeInt.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\hash.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\hwtime.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\msvc.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\mutex.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\os.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\os_common.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\os_setup.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\os_win.h tsrc
1 file copiati.
for %i in (.\src\pager.h .\src\pcache.h .\src\pragma.h .\src\sqlite.h.in .\src\sqlite3ext.h .\src\sqliteInt.h .\src\sqliteLimit.h .\src\vdbe.h .\src\vdbeInt.h .\src\vxworks.h .\src\wal.h .\src\whereInt.h) do copy /Y %i tsrc
C:\sqlcipher-master>copy /Y .\src\pager.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\pcache.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\pragma.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\sqlite.h.in tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\sqlite3ext.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\sqliteInt.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\sqliteLimit.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vdbe.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vdbeInt.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\vxworks.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\wal.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\src\whereInt.h tsrc
1 file copiati.
for %i in (.\ext\fts1\fts1.c .\ext\fts1\fts1_hash.c .\ext\fts1\fts1_porter.c .\ext\fts1\fts1_tokenizer1.c .\ext\fts2\fts2.c .\ext\fts2\fts2_hash.c .\ext\fts2\fts2_icu.c .\ext\fts2\fts2_porter.c .\ext\fts2\fts2_tokenizer.c .\ext\fts2\fts2_tokenizer1.c) do copy /Y %i tsrc
C:\sqlcipher-master>copy /Y .\ext\fts1\fts1.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts1\fts1_hash.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts1\fts1_porter.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts1\fts1_tokenizer1.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts2\fts2.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts2\fts2_hash.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts2\fts2_icu.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts2\fts2_porter.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts2\fts2_tokenizer.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts2\fts2_tokenizer1.c tsrc
1 file copiati.
for %i in (.\ext\fts3\fts3.c .\ext\fts3\fts3_aux.c .\ext\fts3\fts3_expr.c .\ext\fts3\fts3_hash.c .\ext\fts3\fts3_icu.c .\ext\fts3\fts3_porter.c .\ext\fts3\fts3_snippet.c .\ext\fts3\fts3_tokenizer.c .\ext\fts3\fts3_tokenizer1.c .\ext\fts3\fts3_tokenize_vtab.c .\ext\fts3\fts3_unicode.c .\ext\fts3\fts3_unicode2.c .\ext\fts3\fts3_write.c .\ext\icu\icu.c .\ext\rtree\rtree.c .\ext\session\sqlite3session.c .\ext\rbu\sqlite3rbu.c .\ext\misc\json1.c .\ext\misc\stmt.c) do copy /Y %i tsrc
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_aux.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_expr.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_hash.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_icu.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_porter.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_snippet.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_tokenizer.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_tokenizer1.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_tokenize_vtab.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_unicode.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_unicode2.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_write.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\icu\icu.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\rtree\rtree.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\session\sqlite3session.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\rbu\sqlite3rbu.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\misc\json1.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\misc\stmt.c tsrc
1 file copiati.
for %i in (.\ext\fts1\fts1.h .\ext\fts1\fts1_hash.h .\ext\fts1\fts1_tokenizer.h .\ext\fts2\fts2.h .\ext\fts2\fts2_hash.h .\ext\fts2\fts2_tokenizer.h) do copy /Y %i tsrc
C:\sqlcipher-master>copy /Y .\ext\fts1\fts1.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts1\fts1_hash.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts1\fts1_tokenizer.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts2\fts2.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts2\fts2_hash.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts2\fts2_tokenizer.h tsrc
1 file copiati.
for %i in (.\ext\fts3\fts3.h .\ext\fts3\fts3Int.h .\ext\fts3\fts3_hash.h .\ext\fts3\fts3_tokenizer.h .\ext\icu\sqliteicu.h .\ext\rtree\rtree.h .\ext\rtree\geopoly.c .\ext\rbu\sqlite3rbu.h .\ext\session\sqlite3session.h) do copy /Y %i tsrc
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3Int.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_hash.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\fts3\fts3_tokenizer.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\icu\sqliteicu.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\rtree\rtree.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\rtree\geopoly.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\rbu\sqlite3rbu.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y .\ext\session\sqlite3session.h tsrc
1 file copiati.
for %i in (opcodes.c parse.c) do copy /Y %i tsrc
C:\sqlcipher-master>copy /Y opcodes.c tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y parse.c tsrc
1 file copiati.
for %i in (keywordhash.h opcodes.h parse.h shell.c sqlite3.h) do copy /Y %i tsrc
C:\sqlcipher-master>copy /Y keywordhash.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y opcodes.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y parse.h tsrc
1 file copiati.
C:\sqlcipher-master>copy /Y shell.c tsrc
Impossibile trovare il file specificato.
C:\sqlcipher-master>copy /Y sqlite3.h tsrc
Impossibile trovare il file specificato.
NMAKE : fatal error U1077: 'for' : return code '0x1'
Stop.
In the src
directory there are the files shell.c.in
and sqlite3.h.in
, so perhaps I have to generate the missing files from their *.in
version?
Someone can help me?