2011-12-14 2 views
4

확실하지 링커 오류가 발생, lib에 정의되어 있지만 말을 내가 가진 LIB, 나는 관련 헤더 (foo.h)와 atttempt과 함께 다른 프로젝트에서 lib 디렉토리 foo는 인스턴스 호출하는 것을 포함하는 경우 : 말표준 라이브러리가 이미 내가 여기서 잘못하고있는 무슨

foo f; 
f.Get10(L"ABC"); 

내가 링커 오류를 :

01 23,516,

오류 1 오류 LNK2005 : "공공 : __thiscall 표준 : _ Container_base12 :: ~ _Container_base12 (무효)" (?? 1_Container_base12 @ 표준 @@ QAE @ XZ) 이미 foo.lib에 정의 (foo.obj) C : \ foo \ msvcprtd.lib (MSVCP100D.dll) footest

어떤 이유입니까?

+0

클래스 정의 뒤에 세미콜론'; '을 추가하려고 했습니까? –

+0

옙 거기에 소스 파일 인 haha가 있습니다. 여기에 넣은 것에서 벗어나는 것이 좋지 않습니다. – tweetypi

답변

18

"오류 1 오류 LNK2005 :"공공 : __thiscall 표준 : foo.lib (foo.obj)에서 이미 정의 된 _Container_base12 :: ~ _Container_base12 (void 1_Container_base12 @ std @@ QAE @ XZ) C : \ foo \ msvcprtd.lib (MSVCP100D.dll) footst "

내가 볼 수있는 바로는이 오류 메시지는 MSVC 런타임 라이브러리를 두 번 포함하려고한다는 것을 의미합니다. 이것은 foo.lib를 런타임 라이브러리 옵션과 함께 컴파일 한 결과 일 수 있습니다 : 다중 스레드 (/ MT) 및 옵션이있는 테스트 프로젝트 (예 : 다중 스레드 DLL (/ MD)).

두 프로젝트의 프로젝트 속성/C/C++/코드 생성에서 런타임 옵션을 확인하고 두 프로젝트에서 모두 동일해야합니다.

+0

"런타임 라이브러리 옵션 사용 : 다중 스레드 (/ MT) 및 옵션이있는 테스트 프로젝트 : 예 : 다중 스레드 DLL (/ MD)". 빙고, 그게 정확히 그 (게시하려면 여기에 온) – tweetypi

+0

나는 전에 그 같은 오류를 게시했을 때 무슨 일이 일어나고 있는지 알고 경험 : – ksming

+1

이 다른 질문은 관련이 있습니다 : http://stackoverflow.com/questions/4917592/compiling-and-using-jsoncpp-on-visual-studio10-with-boost –

0

모든 .h 파일에 foo.h를 포함하고 있습니까? 또한

#ifndef FOO_H_ 
#define FOO_H_ 

class foo 
{ 
public: 
    int Get10(std::wstring); 
} 

#endif // FOO_H_ 

참조 : 당신은 당신이 한 번 파일 당보다 클래스 이상을 정의하지 있도록 헤더 가드를 추가해야 할 수 있습니다 http://en.wikipedia.org/wiki/Include_guard

+0

이미 완료했습니다 ... – tweetypi

+0

사용중인 모든 기능의 전체 소스와 명령 줄을 포함시킬 수 있습니까? – sligocki

+0

링커 오류는 모든 헤더 파일 문제를 지나치게 ... – Joey