SQLite 3.7.5 이상의 버전에서는 ICU Unicode 모듈이 추가되어 이 모듈을 추가하거나 기능을 비활성화 하여야 한다.

Visual C++ 의 경우 ICU 모듈을 사용할 수 있어서 ICU4C 소스를 받아서 라이브러리에 포함 시켜준다. ICU4C 전체 소스는 필요없고 소스 파일 패키지(icu4c-4_6_1-src.zip)에서 source/common/unicode 폴더가 필요하며 부가적으로 source/i18n/unicode/uregex.h 파일이 필요하다.

진행에 사용한 버전은 SQLite 3.7.6.1 버전과 Visual C++ 2005, 2010 버전이다.

아래는 Visual C++ 에서 SQLite Static Library 를 만들기 위한 프로젝트 구조이다. 
  SQLiteStatic
     - icu
        - unicode
     - sqlite
     - SQLiteStatic2005
     - SQLiteStatic2010 

 unicode 폴더에는 icu4c 소스의 source/common/unicode 폴더에 포함 된 파일들과 source/i18n/unicode/uregex.h 을 넣어 두었다.
sqlite 폴더에는  sqlite-preprocessed-3070601.zip 의 파일들과 sqlite-src-3070601.zip 의 sqlite-src-3070601/ext/rtree 폴더에 포함되어 있는 sqlite3rtree.h 파일을 복사해 두었다.

위와 같이 파일들을 준비하고 메인프로젝트 하위에 Visual C++ 2005 와 Visual C++ 2010 버전을 위한 프로젝트를 만들었다. 두 버전의 프로젝트 설정은 동일하다.

Visual C++로 "Win32 Consol Application" 을 생성한다. 생성할 때 응용프로그램 설정(Application Settings)에서 정적 라이브러리(Static Library) 를 선택하고 미리 컴파일된 헤러(Precompiled header)를 사용하지 않도록 만든다.

만들어진 프로젝트에 sqlite 경로에 있는 파일들(fts1*, fts2* 파일들과 tclsqlite.c 제외)을 추가한다.
마지막으로 아래와 같은 프로젝트 설정을 한다.
General/Additional Include Directories :
..\icu

Preprocessor/Preprocessor Definitions :
NO_TCL
_CRT_SECURE_NO_WARNINGS (optional)
SQLITE_ENABLE_BROKEN_FTS1=1
SQLITE_ENABLE_BROKEN_FTS2=1

Code Generation/Runtime Library :
Multi-threaded (Release)
Multi-threaded Debug (Debug)

Advanced/Disable Specific Warnings
4267;4244;4018;4311;4996;4312 (optional) 

설정을 마치고 컴파일을 하면 SQLite 정적 라이브러리를 얻을 수 있다.
64비트가 필요할 경우 64비트 Platform 을 추가하고 
Preprocessor/Preprocessor Definitions 항목의 WIN32를 WIN64로 변경하고 컴파일 하면 된다.

만들어진 라이브러리를 테스트 해 보았는데 
Visual C++ 2005 버전 프로젝트에 사용하려면 Visual C++ 2005 버전으로 만든 정적 라이브러리를 사용하여야 완벽한 동작을 보장 받을 수 있을 것 같았다. (Visual C++ 2010 버전도 동일함.)


2011/02/08 - [Dev Story] - SQLite 3.7.5.0 Library (정적/동적) for C++ Builder and Visual C++
2008/12/07 - [Dev Story/Tips] - Visual C++ 용 SQLite 정적 라이브러리 만들기 
Posted by NeoDreamer
:
BLOG main image
사람의 발목을 잡는건 '절망'이 아니라 '체념'이고 앞으로 나아가게 하는건 '희망'이 아니라 '의지'다. - 암스 중에서 - by NeoDreamer

공지사항

카테고리

전체보기 (793)
Life Story (1)
Thinking (2)
Nothing (5)
---------------* (0)
Dev Story (701)
Com. Story (80)
IT Story (1)
---------------+ (0)
Etc (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :
05-07 09:31