Hello, I am upgrading from SQLite 3.8.5 to 3.9.2, using the standard amalgamation source code (no changes, no conditional defines).
The compiler I am using is Embarcadero C++Builder XE7, which uses a Clang-based (LLVM) 64-bit compiler. When building a 32-bit version of my MS-Windows-executable, the compiling and linking to SQLite3 is without problem. However, when doing this for a 64-bit version, the linking exits with an unresolved external '__faststorefence' referenced from sqlite3.o. It appears that 'MemoryBarrier()' in sqlite3MemoryBarrier(void) on lines 21025+ in sqlite3.c somehow gets translated as a macro to '__faststorefence', but only in the 64-bit compile, not in the 32-bit-compile. Version 3.8.5 has 'MemoryBarrier()' commented out, which is in 3.9.2. replaced by 'sqlite3MemoryBarrier()'. Do I need to explicitly add a library for the linking or do I need to adjust the SQLite3 source code? Is this a bug in the source code? Help is appreciated! (If this is important, my application makes use of qlite3_mutex_enter() and sqlite3_mutex_leave() for write access on the same database by parallel threads.) With kind regards, Johan Van Ooijen