SQLite 가 공개가 되면 프로젝트에 사용적용하기 위해 64비트용 dll과 static 라이브러리를 만들었다.
그런데 이번 3.7.10 버전은 Visual C++ 2005 버전에서 컴파일은 문제 없으나 데이터베이스 생성시 런타임 에러가 발생하였다. Visual C++ 2010 버전에서는 문제가 발생하지 않았다.
amalgamation 을 이용하여 SQLite를 프로젝트에 포함을 시켜도 증상은 동일하였다.
관련 정보를 찾아보다가 그 원인과 해결책을 찾았다.
참고가 된 정보는 http://www.sqlite.org/src/info/1ce4d21d52 이다.
Visual C++ 2005 버전에서는 _WIN32_WINNT 가 기본적으로 정의가 되지 않아 sqlite3.c 컴파일 때 Window로 인식하하지 않아 런타임 에러가 발생하는 것이였다.
해결책은 sqlite3.c 파일을 수정하면 된다.
수정해야할 내용은 문제의 정보가 있는 http://www.sqlite.org/src/info/1ce4d21d52 있는 방법대로
부분을 아래 내용을 바꾸면 된다.
더 간단한 방법은 sqlite3.c 가장 윗줄에 _WIN32_WINNT 을 define 해주면 된다.
#define _WIN32_WINNT 0x0500
그런데 이번 3.7.10 버전은 Visual C++ 2005 버전에서 컴파일은 문제 없으나 데이터베이스 생성시 런타임 에러가 발생하였다. Visual C++ 2010 버전에서는 문제가 발생하지 않았다.
amalgamation 을 이용하여 SQLite를 프로젝트에 포함을 시켜도 증상은 동일하였다.
관련 정보를 찾아보다가 그 원인과 해결책을 찾았다.
참고가 된 정보는 http://www.sqlite.org/src/info/1ce4d21d52 이다.
Visual C++ 2005 버전에서는 _WIN32_WINNT 가 기본적으로 정의가 되지 않아 sqlite3.c 컴파일 때 Window로 인식하하지 않아 런타임 에러가 발생하는 것이였다.
해결책은 sqlite3.c 파일을 수정하면 된다.
수정해야할 내용은 문제의 정보가 있는 http://www.sqlite.org/src/info/1ce4d21d52 있는 방법대로
#if defined(_WIN32_WINNT)
# define SQLITE_OS_WINNT 1
#else
# define SQLITE_OS_WINNT 0
#endif부분을 아래 내용을 바꾸면 된다.
#if SQLITE_OS_WIN && !defined(SQLITE_OS_WINNT)
# define SQLITE_OS_WINNT 1
#endif 더 간단한 방법은 sqlite3.c 가장 윗줄에 _WIN32_WINNT 을 define 해주면 된다.
#define _WIN32_WINNT 0x0500
'Dev Story > Tips' 카테고리의 다른 글
[C++] 디렉토리 존재 검사 및 생성 (2) | 2012.05.12 |
---|---|
C#에서 OpenCV 사용하기 - OpenCVSharp (0) | 2012.02.24 |
Visual C++ 프로젝트에 SQLite 포함시키기 (2) | 2012.02.05 |
[Android Dev.]SDK 샘플 프로그램 실행하기 (0) | 2012.01.25 |
Doxygen 1.7.x.x 한글 출력 문제 (0) | 2011.12.20 |