SQLite3 를 이용하여 Stand alone Database 를 제작할 경우 http://www.sqlite.org 에서 Download 페이지의 Source Code 항목에서 sqlite-source-3_4_0.zip 파일을 다운 받습니다.

VS 에서 빈 DLL 을 만듭니다.

Static 이나 DLL 이나 상관없이 Source 에는 *.c 파일을 모두 포함시키고 Header 에는 *.h 파일을 모두 포함시킵니다.

그리고 컴파일을 합니다.

그럼 에러가 하나 발생합니다. tcl 관련인데 그 헤더 파일은 과감히 삭제합니다.

사용하지 않는 헤더 입니다.

그리고 Debug 로 컴파일 하면 에러가 발생하지 않습니다.

Release 로 컴파일 하면 아래와 같은 에러가 발생합니다.

C:\[ work ]\sqlite\sqlite-source-3_4_0\btree.c(2769) : fatal error C1001: INTERNAL COMPILER ERROR
  (compiler file 'F:\9782\vc98\p2\src\P2\regasg.c', line 646)
    Please choose the Technical Support command on the Visual C++
    Help menu, or open the Technical Support help file for more information

몇 일동안 이 것때문에 Debug 에서 만든 DLL 만 사용하다가 오늘은 결국 알아내었습니다.

원인은 아래와 같은 컴파일 옵션 중에 빠른 속도로 최적화 하는 /O2 옵션 때문이었습니다.

/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"Release/sqlitestatic.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c

결과 적으로 옵션을 /O2/Ow 로 바꾸어 주면 컴파일 에러가 발생하지 않습니다.

VS6 의 경우 Project Settings - C/C++ 탭에서 Optimizations 에서 Maximize Speed 대신 Customize 를 선택하면 됩니다.

혹시나 위와 같은 에러를 만날경우 참고 하시길 바랍니다.
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기