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

Reply via email to