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 를 선택하면 됩니다.
혹시나 위와 같은 에러를 만날경우 참고 하시길 바랍니다.
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 를 선택하면 됩니다.
혹시나 위와 같은 에러를 만날경우 참고 하시길 바랍니다.
최근 댓글