2012-04-17 2 views
0

오류 LNK2019 : 해결되지 않은 외부 기호 문제가 있습니다.오류 LNK2019 : 확인할 수없는 외부 기호 - 보이지 않는 문제 인스턴스

2 개의 다른 프로젝트가 클래스를 사용할 수 있도록 파일 2 개를 공유 위치로 이동했습니다. 거기에 다른 클래스가 있습니다.

문제는 내가 프로젝트 중 하나의 메인에서 클래스를 호출 할 때 i는 기능 중 하나에 헤더 파일을 마우스 오른쪽 버튼으로 클릭을 열고 정의에 갈 갈 때

error LNK2019: unresolved external symbol "public: __thiscall CProcessCommandLine::~CProcessCommandLine(void)" ([email protected]@[email protected]) referenced in function _main 
error LNK2019: unresolved external symbol "public: bool __thiscall CProcessCommandLine::Wait(void)const " ([email protected]@@QBE_NXZ) referenced in function _main 
error LNK2019: unresolved external symbol "public: class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const & __thiscall CProcessCommandLine::getTargetNamesVect(void)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@XZ) referenced in function _main 
error LNK2019: unresolved external symbol "public: __thiscall CProcessCommandLine::CProcessCommandLine(void)" ([email protected]@[email protected]) referenced in function _main 

를 받고 메신저이다 그것은 .cpp의 정의로 이동하지 않습니다. .cpp에서 함수를 마우스 오른쪽 버튼으로 클릭하고 정의로 이동하면 "심볼이 정의되지 않았습니다."라고 말합니다.

왜 이런 일이 벌어지고 있는지 알 수 있습니다. .H 및 .CPP 모두 같은 위치에 있고 추가 프로젝트의 디렉토리를 포함에 그 위치는

편집 :

다음 코드는이 폴더에 다른 파일에 존재

:

#ifdef PROJ1 
#include "class1.h" 
#elif PROJ2 
#include "class2.h" 
#endif 

필자는 전에 이런 것들을 보지 못했습니다. 그것들은 코드에서 사용되지만 어떤 프로젝트에 사용되는지에 따라 올바른 헤더를 포함하기 위해서만 사용됩니다. 위의 내용은이 폴더의 다른 클래스의 .cpp에 있습니다. 그래서 나는 그것을 여기에 넣었다. 그러나 다른 클래스에서는 그것이 속하지 않는 프로젝트가 회색으로 표시됩니다. 내가 그것을 .h에 넣었을 때 정확한 헤더가 회색으로 변합니다. 그러나 어떤 이유로이 .cpp가 프로젝트의 일부로 인식되지 않습니다. 당신의 기능은 구축하고있는 것과 다른 모듈에 속하는 경우

+1

나는 당신이 개체/도서관과 연결되어 있다고 생각지 않는다? – trojanfoe

+0

아닐 수도 있습니다. 이드의 생각은 편집/링크 중에 다른 모든 것들과 함께 이루어 지지만 분명히 그렇지 않다. 객체/라이브러리는 어디에 있습니까? – discodowney

답변

0

, 당신은 클래스를 수출해야합니다 :

#ifdef THIRD_MODULE 
#define DLLIMPEXP _declspec(dllexport) 
#else 
#define DLLIMPEXP _declspec(dllimport) 
#endif 

class DLLIMPEXP CProcessCommandLine 
{ 
    //... 
}; 

당신은 정의 THIRD_MODULE이 클래스를 정의하는 프로젝트를 빌드합니다.

이 프로젝트는 .lib 파일을 생성합니다.이 파일은 주 프로젝트의 링커 설정에서 추가 종속성에 추가해야합니다.

+0

원래 게시물을 편집했습니다. – discodowney

+0

@discodowney 편집 내용이 내 대답에 영향을 미치지 않습니다. 'cpp' 파일은 단지 하나의 프로젝트의 일부일뿐입니다. –

+0

여기에서 끔찍하게 잃어버린 Im. 왜 헤더 파일은 괜찮습니까? – discodowney

관련 문제