2012/02/06
Visual C++ 2005 와 SQLite 3.7.10
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 있는 방법대로
#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 &
Original Post : http://neodreamer-dev.tistory.com/637
그런데 이번 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 &
Original Post : http://neodreamer-dev.tistory.com/637
Labels:
_WIN32_WINNT
,
SQLite
,
TistoryOldPost
,
VC2005
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment