2011-07-31 5 views
2

코드에 문제가 있습니다. 그것은 기본적으로 다음과 같습니다코드를 변경할 때마다 해결되지 않은 외부 기호

가 someclass.hpp :

class SomeClass 
{ 
public: 
    SomeClass(); 
    ~SomeClass(); 

    //... some other methods 
}; 

someclass.cpp :

#include "SomeClass.hpp" 
SomeClass::SomeClass() 
{ 
} 

SomeClass::~SomeClass() 
{ 
} 

SomeClass.cpp는 아무것도 포함되지 않습니다.

생성자는 실제로 비어 있습니다. 나는 아마도 그것들을 정의하지 않거나 표준 생성자를 떠나고 싶지 않습니다. 아마 나중에 필요할 것이기 때문입니다.

SomeClass.hpp 실제로 하나 개의 장소에 포함 된 gamestate 클래스입니다 :

MAIN.CPP 있습니다 모두

#include "SomeClass.hpp" 

int main() 
{ 
    DoSomethingWithGamestate(new SomeClass()); 
    return 0; 
} 

그리고이 프로젝트는 다른 많은 파일로 구성되어, 하지만 SomeClass와는 별개입니다. , 분명히

error LNK2001: unresolved external symbol "public: __thiscall SomeClass::SomeClass(void) (??blablaSomeClassblabla) 

:

문제는 그 코드에 아무것도 변경할 때마다, 상관없이 어떤 파일에, 나는 변경 사항 만 컴파일하면 링커가이 발생하기 때문에 전체 솔루션을 다시 컴파일해야한다는 것입니다 SomeClass()가 someclass.cpp에 명확하게 정의되어 있기 때문에 이상한 일이 있습니다.

이 소스가 될 수있는 것은 무엇입니까?

답변

1

@Nawaz가 말한 것 이외에도, 빌드 파일이 링커와 동기화되지 않아 Visual Studio가 다시 링크 할 때 파일이 동기화되지 않아 파일을 다시 연결할 수 없기 때문일 수 있습니다. 그냥 다시 빌드하고 끝내십시오.

그런데 Visual Studio 2010 as seen here의 버그 일 수도 있습니다.

+0

몇 가지 변경 사항을 위해 전체 프로젝트를 다시 빌드하는 데 시간이 오래 걸리고 (당분간 약 2 분이 소요되며 시간이 지나면 확실히 빠르게 증가 할 것이기 때문에) 엄청나게 번거롭고 디버깅 톤이 느려지므로 묻습니다 . 빌드 파일을 최신 상태로 유지할 수있는 방법이 있습니까? 전체를 재구성하지 않고 수동으로 업데이트 할 수 있습니까? – TravisG

+0

@heishe : 재건은 고통입니다. 파일을 '만들'수 있습니다. –

관련 문제