일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 모터종류
- 리본
- 특허
- 네트워크 문제 해결
- PID
- Ctrl z
- 동적프로그래밍
- 플레인 스위핑
- 보정서
- 알고리즘
- gsoap
- SQLite
- vc mfc
- 주성분 분석
- SW검정
- 유클리드 거리
- 리눅스
- 최소 신장 트리
- 전세
- 진보성
- 직선의 방정식
- pca
- 주식
- 동적 프로그래밍
- algorithm 함수
- Linux
- 모든 경우수 돌기
- PID 제어
- WebService
- SW 검정
- Today
- Total
[간단팁] SQLite 컴파일 하기.. 본문
SQLite 컴파일 하기..
현재 최신버전이 3.6.3 이더군요...
돌아다니는 문서들을 보면..
3.3.x 기준인거 같더군요..
이 문서에 따르면 컴파일시.. 오류가 나는데..
"tcl.h" 파일이 없는 오류입니다..
이것을 피하려면.. 컴파일시에 NO_TCL 를 정의하면 됩니다..
PreDefine 하면 되는데요..
이렇게 해결은 되는데..
문제는 3.6.3 에서는 이렇게 해결이 안됩니다...
해당 c 파일에 NO_TCL 관련해서 #ifndef 가 되어있지 않다는 겁니다..
그렇다고 해당 c 파일을 제거한다해도 오류가 납니다..
따라서 해결 방법은..
1. SQLite 사이트의 다운로드 페이지에서 소스를 받는데.. "sqlite-amalgamation-3_6_3.zip (899.86 KiB)" 를 받습니다..
"sqlite-source-3_6_3.zip (920.60 KiB) " 도 밑에 보면 있지만.. 이걸로는 잘 해결이 안됩니다...
sqlite-amalgamation-3_6_3.zip 이 소스는 이름에서와 같이 모든 소스들을 병합하여 달랑 3개의 파일로 구성한겁니다.
sqlite-source-3_6_3.zip 부분의 코멘트를 보면 sqlite-amalgamation-3_6_3.zip 를 받으라고 강력히 추천하더군요..
일단 sqlite-amalgamation-3_6_3.zip 을 받습니다.
2. 압축을 풀면 딸랑 파일 3개가 나옵니다.
이것을 vc++6 에 불러옵니다..물런 dll 프로젝트를 생성하시구요...
3. 그리고.. 컴파일 전에 다운로드 사이트에서 dll 윈도우즈용 바이너리 파일도 받습니다..
그리고 압축을 풀면. dll 파일과, def 파일이 나오는데.. 이 def 파일을 dll 프로젝트에 임포트 합니다.
4. 그리고 컴파일 하면.. unresolved 라는 오류가 납니다. .자세히 보면 def 파일에 export 하려고하는 함수입니다.
이게 정의가 안되었다고 나오는건데... 물론 def 에 해당 오류나는 파일을 지워주면 됩니다.
하지만 웬지 찜찜합니다..함수 몇개가 빠지니...
잘 소스를 찾아보면
#ifndef SQLITE_ENABLE_COLUMN_METADATA
# define sqlite3_column_database_name 0
# define sqlite3_column_database_name16 0
# define sqlite3_column_table_name 0
# define sqlite3_column_table_name16 0
# define sqlite3_column_origin_name 0
# define sqlite3_column_origin_name16 0
# define sqlite3_table_column_metadata 0
#endif
같은 내용을 확인할수 있습니다.
맞습니다.. SQLITE_ENABLE_COLUMN_METADATA 것이 정의되어있지 않으면..
해당 함수를 0 으로 정의 되므로 컴파일시 오류가 나는겁니다..
그래서 Project>Settings>Preprocessor definitions 란에..
SQLITE_ENABLE_COLUMN_METADATA을 넣어주면 됩니다.
5. 컴파일을 합니다.
그러면 해당 dll 이 똑 떨어질겁니다...흠..
이런식으로 static library 를 만들수 있고..
WindowsCE 에서도 컴파일하여 사용할 수도 있습니다.