소스파일의 기준은 https://www.sqlite.org/download.html 이곳에서 sqlite-autoconf-VERSION.tar.gz 기준. (현재는 3380200)
소스파일 압축본 내 README.txt 파일과 https://www.sqlite.org/howtocompile.html 이곳을 참조하여 nmake "OPTS=-DSQLITE_ENABLE_STAT4=1 -DSQLITE_OMIT_JSON=1" /f Makefile.msc
이렇게 빌드하였다.
이후 sqlite3.lib 파일로 링크하면 링크 오류가 발생하고 lib 파일을 열어다보니 export된 함수가 없다는것을 알 수 있었다. make 중 dumpbin /all sqlite3.lo
명령으로 sqlite3.def 파일을 생성하는 부분이 눈에 보이는데 단순히 버그인지 아니면 MSVC의 버전이 올라가면서 컴파일러 전처리기에 차이가 발생하는건지 sqlite3.def 파일에 export될 함수들이 없어 발생하는 문제인거같다.
stack overflow의 글(https://stackoverflow.com/a/71106434)을 참조하면 식별자 SQLITE_API로 dllexport를 지정하면 된다고 되어있으며 Makefile.msc 파일을 확인해본 결과 DYNAMIC_SHELL=1
을 nmake 실행 시 지정하면 되는것으로 파악되었다.
결론: nmake "OPTS=-DSQLITE_ENABLE_STAT4=1 -DSQLITE_OMIT_JSON=1" DYNAMIC_SHELL=1 /f Makefile.msc
이렇게 빌드하면 된다. sqlite3.h, sqlite3.lib, sqlite3.dll 파일들을 적당히 복사하여 사용하면 끗.