I compile your code thusly: ``` cl -nologo -W4 -DINCLUDE_MSVC_H=1 -DSQLITE_OS_WIN=1 -I. -I. -fp:precise -MT -DNDEBUG -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -DSQLITE_THREADSAFE=1 -DSQLITE_THREAD_OVERRIDE_LOCK=-1 -DSQLITE_TEMP_STORE=1 -DSQLITE_MAX_TRIGGER_DEPTH=100 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_JSON1=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_DEFAULT_FOREIGN_KEYS=1 -DSQLITE_ENABLE_SESSION=1 -DSQLITE_ENABLE_GEOPOLY -DSQLITE_ENABLE_PREUPDATE_HOOK=1 -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_STMTVTAB -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION -DSQLITE3_OMIT_WINDOWFUNC -O2 -DSQLITE_API=__declspec(dllimport) -LD sqliteFcts.c ``` Then I had the following session: ``` > sqlite3m SQLite version 3.32.0 2020-02-18 19:49:48 (with modified shell) Enter ".help [<command>]" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite> .load sqliteFcts sqlite3_sqliteFcts_init sqlite> .q > sqlite3m SQLite version 3.32.0 2020-02-18 19:49:48 (with modified shell) Enter ".help [<command>]" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite> .load sqliteFcts Error: The specified procedure could not be found. sqlite> .q > notepad ..\sqliteFcts.c ``` After changing the entry point to 'sqlite3\_sqlitefcts\_init' (note case change), I compiled again, the same way, and had the following session: ``` > sqlite3m SQLite version 3.32.0 2020-02-18 19:49:48 (with modified shell) Enter ".help [<command>]" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite> .load sqliteFcts sqlite> .q ``` I don't know what you are doing differently. As far as I can tell, if you build the DLL with the usual calling convention and export, it should work with the entry point renamed or with it explicitly specified to sqlite3\_load\_extension(). Perhaps you are not linking correctly to the sqlite3 API. See the last -D argument to CL.exe about that.