2014-04-07 4 views
0

정적 라이브러리 프로젝트를 만들었으며이를 라이브러리를 사용하는 프로젝트에 포함 된 솔루션에 추가했습니다. 내 프로젝트에서 내 정적 라이브러리를 사용할 수 없습니다.

는 내가 다른 정적 라이브러리에서와 같이 내가 주 프로젝트에에서 필요한 클래스를 포함하지만, 이러한 오류가 발생합니다 :
error LNK2019: unresolved external symbol "public: __thiscall NetworkingLib::Base::Base(void)" ([email protected]@@[email protected]) referenced in function _SDL_main 
error LNK2019: unresolved external symbol "public: void __thiscall NetworkingLib::Base::Connect(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" ([email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) referenced in function _SDL_main 

은 내가 잘못 무슨 일이 일어나고 있는지 모른다. 같은 방법으로 라이브러리를 사용하는 다른 프로젝트를 확인한 결과 차이점을 찾을 수 없습니다. 문제를 감지하는 데 도움이 필요합니까?

NetworkingLib :: Base 클래스에는 원하는 메서드가 있습니다. 그래서 내가 주 프로젝트에서했던 것은 : 내가 그렇게 문제가 다른 곳에서해야이 문제 아무것도 생각하지 않습니다

#include "../NetworkLibrary/Base.h" 

NetworkingLib::Base *m_pNetworkObj; 
m_pNetworkObj = new NetworkingLib::Base(); 
m_pNetworkObj->Connect("localhost", "80"); 

.

+1

무엇이 해당하는지 확실하지 않습니다 윈도우에서'nm'의 값을 보았습니다. 그러나 누락 된보고 된 심볼이 실제로 정적 라이브러리에 포함되어 있는지 확인하는 것이 좋습니다. – jsantander

+0

어떤 버전의 Visual C++/Visual Studio를 사용하고 있습니까? –

+0

VS2012를 사용하고 있습니다. – Dries

답변

2

동일한 솔루션에서 정적 라이브러리를 사용하는 것만으로는 충분하지 않습니다. 그것을 사용하는 프로젝트의 링커에게 전달해야합니다.

Visual Studio에서이 작업을 수행하는 가장 좋은 방법은 "프로젝트 참조"를 추가하는 것입니다. 이렇게하면 종속성이 설정되어 프로젝트가 올바른 순서로 빌드되고 소비 프로젝트와 일치하는 정적 라이브러리 버전 (Debug vs Release, x86 vs x64 등)이 선택됩니다.

+0

링커 (추가 종속성)에 라이브러리를 추가하면 디버그 폴더에 있음에도 불구하고 파일을 찾을 수 없다는 메시지가 나타납니다. "Project reference"에 관한 것 좀 더 검색하기 – Dries

+0

Ok! 그걸 수정 한 것 같습니다! 고마워. – Dries

관련 문제