우선 라이브러리들을 생성한후 적용해서 테스트를 할 기본적인 프로젝트를 생성합니다.
저는 MFC 로 프로젝트를 생성합니다.
특별한 옵션은 없고, 그냥 응용프로그램 종류에서 단일 문서에만 체크를 해놓고 생성하겠습니다.
프로젝트 명은 CreateLib 라고 했습니다.
/////////////// 1. 정적 라이브러리 생성 및 사용법 ///////////////
Json을 사용하기 위해 jsoncpp를 정적 라이브러리로 만들어 보겠습니다.
저는 jsoncpp-src-0.5.0 를 다운받아서 사용합니다.
jsoncpp는 인터넷에서 쉽게 찾아서 다운로드 하실수 있습니다 ~
1. 사진에 보이듯이 솔루션 오른쪽 클릭 -> 추가 -> 새프로젝트를 누른후 -> win32(win32 프로젝트) 만듭니다.(프로젝트 명: JSon)
2. 설정은 정적 라이브러리에 체크, 미리 컴파일된 헤더는 해제해주세요.
3. 생성완료 하셧으면 아까만든 프로젝트(CreateLib) 폴더안에 JSon이라는 이름의 프로젝트 폴더가 하나 더 생긴것을 확인할수 있습니다.
JSon 폴더 안에 lib_json 이라는 폴더를 사진에서 보시는것처럼 붙여놓았는데
lib_json 안에 들어가는 목록들은 우선 jsoncpp-src-0.5.0(버전) 을 다운로드 하셧다면
jsoncpp-src-0.5.0 -> src 에 들어가시면 lib_json 폴더가 있는데 우선 그폴더를 복사해서 붙여넣어주시고
jsoncpp-src-0.5.0 -> include에 들어가시면 json 폴더가 있는데 그 폴더를 lib_json에 같이 넣으셔서 사진처럼 넣어줍니다.
4. 3번까지 완료하셧으면 이제 비쥬얼 스튜디오로 다시 돌아와서 JSon이라는 필터 하나 만들어주시고 거기 안에는 lib_json->json 폴더 안에 있는 헤더파일들을
소스 파일에는 lib_json 폴더 안에 있는 json_reader, json_value, json_writer.cpp 를 불러와 줍니다.
(사진은 저렇게 분류해서 불러왓지만 저렇게 분류해서 굳이 불러오지 않아도 됩니다.)
5. 이제 json.h파일을 include 시키고 우선 생성자 안에 StyledWriter를 하나 만들었습니다. 그 후
빌드를 하면 저렇게 링크 에러가 발생합니다.
링크 에러가 발생하는 이유는 참조를 시켜주지 않아서 컴파일된 함수같은것들을 가져오지 못하기 때문입니다.
6. CreateLib 프로젝트 -> 오른쪽 클릭 -> 속성 -> 공용 속성-> 새 참조 추가 까지 실행하신후에
앞서 만들엇던 JSon 프로젝트를 참조로 추가를 해주고 적용시킵니다.
그러면 앞서 발생했던 링크에러가 해결되는 현상을 볼수 있습니다. (JSon을 사용할수 있게 됫죠!)
7. 여기까지 잘 따라 하셧다면 컴파일 2~3번은 하셨을텐데요.
그러다보면 CreateLib 프로젝트 폴더 -> Debug 폴더 에 들어가보시면 아까 우리가 만들었던 JSon 프로젝트 이름과 똑같은 lib의 확장자 명을 가진 라이브러리가 보일 겁니다.
이 라이브러리가 바로 저희가 컴파일 하는 순간 만들어진 그리고 저희가 얻고자 햇던 json과 관련된 정적 라이브러리 입니다.
이 라이브러리를 이제 프로젝트에 추가만 해주면 앞서 6번에서 햇던 새 참조 추가 이런일을 하지 않아도 json을 그냥 사용할수 있게 됩니다.
8. 기존 처음 프로젝트엿던 CreateLib 폴더에 7번에서 만들어졋던 JSon.lib 를 복사해서 붙여 넣습니다.
비쥬얼 스튜디오로 돌아와서 CreateLib 프로젝트 오른쪽 클릭 -> 속성 -> 링커 -> 입력 에서
추가종속성 편집을 실행하신후 추가한 JSon.lib 이름을 적어주시고 적용시켜 주시면
6번에서 하셧던 새참조 추가를 지우고 컴파일 해보셔도 이제 잘 되는 것을 확인할수 있습니다.
즉. 정적 라이브러리를 생성하고, 적용까지 완료 하셨단 이야기구요. 이제 이 json 라이브러리를 사용하기만 하면 되는겁니다!
다음엔 동적 라이브러리 생성 및 적용 포스팅을 해보겠습니다.
'C++' 카테고리의 다른 글
라이브러리(dll(동적), lib(정적)) 생성 및 사용법 (3) (0) | 2014.08.22 |
---|---|
라이브러리(dll(동적), lib(정적)) 생성 및 사용법 (2) (1) | 2014.08.22 |
라이브러리(Library) 란? (0) | 2014.08.22 |
boost 라이브러리 빌드 설치 [비쥬얼 스튜디오(VS)] (0) | 2014.06.03 |
[c++] LinkedList(링크드리스트) vs Array(배열) 비교 (0) | 2014.02.09 |