Visual Studio에서 .lib로 컴파일하면 성공하지만 .exe로 컴파일하면 linking error가 나는 문제

나그네나그네의 이미지

제목 그대로입니다

Visual Studio에서 .lib로 컴파일하면 성공하지만 .exe로 컴파일하면 linking error가 나는 경우가 가끔씩 발생합니다.

주로 나오는 에러꼴은 다음과 같습니다.

DataSet.obj : error LNK2001: "public: void __thiscall Trie<int>::clear(void)" (?clear@?$Trie@H@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
</cite>
 
무엇이 문제인지 전혀 모르겠습니다 -_-; 이 경우엔, Trie.h에 클래스의 스켈레톤이 대충 정의 되어 있고, Trie.cpp에 메소드들을 채워넣은 다음, DataSet.cpp에서 Trie.h를 include해서 사용했을 때 뜨는 경우입니다.
 
만약 링킹이 잘 안 되었다면 .lib를 만드는 시점에서 이미 에러가 떠야 하는건 아닌지..
 
혹시 비슷한 경험 해 보신 분? 어떤 부분에서 잘못되었는지 유추 가능할까요.
chadr의 이미지

Trie.h에 정의된 함수가 혹시 inline으로 선언되어있나요? 그렇다면 inline을 지워보세요.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

kippler의 이미지

.lib 는 원래 일부 함수나 변수 구현이 빠져 있어도 잘 만들어 집니다.

======== 서명 =======
주거지는 www.indidev.net 입니다.