Why is there no explanation of this directive on the sqlite website (search returns nothing)? Had Keith not spoon fed me it a while back I'd never have been able to use extensions as I've never managed to load one any other way apart from the way he taught me (shown below). DSQLITE=core_init // add below to bottom of sqlite3.c #include "eval.c" #include "carray.c" #include "btreeinfo.c" #include "series.c" int core_init(const char* dummy) { int nErr = 0; nErr += sqlite3_auto_extension((void(*)())sqlite3_eval_init); #ifndef SQLITE_OMIT_VIRTUALTABLE nErr += sqlite3_auto_extension((void(*)())sqlite3_carray_init); nErr += sqlite3_auto_extension((void(*)())sqlite3_btreeinfo_init); nErr += sqlite3_auto_extension((void(*)())sqlite3_series_init); #endif return nErr ? SQLITE_ERROR : SQLITE_OK; }