나는 모든 살아있는 인간이 완벽하게 수행 할 수있는 매우 기본적인 것임을 확신하면서도 어쨌든 그것은 나를 위해 일하지 않습니다. Google을 통해 발견되는 FAQ 및 기타 많은 스레드/질문은이 문제를 해결하지 못했습니다.매우 간단한 클래스 (VS2010)의 해결되지 않은 외부 기호
상황은 다음과 같습니다. Visual Studio 2010 프로젝트가 하나 있습니다. 이 프로젝트는 Visual Studio 2010 솔루션에 있습니다. 이 프로젝트는 다음과 같은 파일이 있습니다
add.h :
class Adder {
public:
static int add(int i1, int i2);
};
add.cpp :
class Adder {
public:
static int add(int i1, int i2) {
return i1 + i2;
}
};
MAIN.CPP :
#include "add.h"
int main() {
Adder::add(5, 6);
return 0;
}
이 코드를 실행하기 , 나에게 상당히 기본 보이는, 다음과 같은 링커 오류가 발생합니다 :
main.obj : error LNK2019: unresolved external symbol "public: static int __cdecl Adder::add(int,int)" ([email protected]@@[email protected]) referenced in function _main
내가 수집 할 수있는 것으로부터 이것은 링커가 Adder :: add()에 대한 구현을 찾을 수 없음을 의미합니다. 그러나 파일은 정확히 같은 프로젝트에 있고 생성 된 .obj 파일은 정확히 같은 폴더에 있으며 클래스 및 헤더 파일의 주제에 대해 읽은 모든 단일 자습서는 이것이 제대로 작동해야 함을 알려줍니다.
나는 지금까지 다음과 같은 잠재적 인 솔루션을 시도했다 :
- 는
- 를 사용하여 별도의를
- 여러 가지로 통근 식별자를 추가 포함/종속/소스/whatevers 추가로 프로젝트의 자신의 폴더 추가 네임 스페이스 희망
- 다양한 다른 작은 조정은 작동 할
S o 내 문제는 다음과 같습니다. 링커에서 add.cpp 파일을 인식하도록하려면 어떻게해야합니까? 어떤 도움을 주셔서 감사합니다. 지금은 성공하지 못한 채로 몇 시간을 보냈습니다.하지만 이것은 매우 기본적인 것 같습니다.
답장을 보내 주셔서 감사합니다. 문제가 해결되었지만 회심 솔루션처럼 보입니다. 클래스를 일반적으로 사용되는 별도의 파일로 분리하는 다른 방법이 있습니까? 아니면 가장 많이 사용되는/편리한 파일입니까? –
@JanJanssen 이것은 ** 클래스를 헤더 및 구현 파일로 분리하는 유일한 방법입니다 **. –