SQLite3 MSVC로 빌드시 주의사항

소스파일의 기준은 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 파일들을 적당히 복사하여 사용하면 끗.

답글 남기기

이메일 주소는 공개되지 않습니다.

*
*

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.