[완료] xalan 을 static library 로 compile 되도록 수정하는 과정에 생긴 질문입니다.
* 혹시 xalan 을 static library 로 컴파일 성공하신 분이 계신가요? google 에서 찾아보니 수정해서 commit 올렸다는 분은 있는데 다운로드 받은 최신 release 에는 적용이 되어 있지 않네요. 그렇다고 repository 접근을 위해 커미터하기도 그렇고요..
* compile 환경은 VC9 입니다. (visual studio 2008)
xalan 이라는 apache 에서 만든 xml 라이브러리를 static library 로 컴파일 할 수 있도록 손보는 과정에서 생긴 문제입니다.
compile 시 밑에 해당하는 것 처럼 link 에러가 발생하였습니다.
SAX2Handler.obj : error LNK2019: unresolved external symbol "public: virtual void __thiscall xercesc_3_0::DefaultHandler::resetDocument(void)" (?resetDocument@DefaultHandler@xercesc_3_0@@UAEXXZ) referenced in function "public: __thiscall xalanc_1_10::SAX2Handler::SAX2Handler(char const *)" (??0SAX2Handler@xalanc_1_10@@QAE@PBD@Z) // 이 비슷한 에러가 xercesc_3_0::DefaultHandler 를 사용하는 모든 곳에서 xercesc_3_0::DefaultHandler 의 모든 method 에 대해 발생합니다.
그래서 확인을 해 보았더니, SAX2Handler.hpp 파일 내부에서 해당 모듈을 정의한 DefaultHandler.hpp 파일을 이미 include 하고 있었습니다.
DefaultHandler.hpp 의 모든 method 들은 virtual method 로 되어 있지만 실지로는 hpp 안에서 inline method 의 형식으로 이미 정의되어 있는 형태이고요.
혹시나 해서 include 하는 밑 부분에 definition 을 다시 적어 주었더니 already defined error 가 대신 뜨는군요.
제가 아는 대로라면, 이런 경우엔 link time 까지 가지 않더라도 compile 시 바로 symbol 을 찾아야 할것 같은데 생각한대로 되지 않아 질문드립니다.
어떤 분을 확인해봐야 할지 조언 부탁드립니다. (--)(__)
해결하였습니다.
해결하였고, static libary 로 묶는데 성공하였습니다.
댓글 달기