#ifndef 및 #define을 사용하지 않는 것이 좋습니다 링커 오류가 발생합니다.#ifndef를 사용하여 링커 오류가 발생하더라도 링커 오류가 발생합니다.
1> TGALoader.obj : 오류 LNK2005 : "구조체 TGA TGA" 이미 main.obj 정의 1> TGALoader.obj (TGA @@ 3UTGA @@?) : 오류 LNK2005 : " tgaheader 구조체 tGAHeader " 이미 main.obj 정의 1> TGALoader.obj (tgaheader @@ 3UTGAHeader @@?) 오류 LNK2005"부호 * CHAR는 가 uTGAcompare "(? uTGAcompare @@ 3PAEA) 이미 정의 main.obj > TGALoader.obj : 오류 LNK2005 : "부호없는 char * cTGAcompare" (? cTGAcompare @@ 3PAEA) 이미 정의 됨 main.obj 1> LINK : 경고 LNK4098 : defaultlib 'LIBCMTD'와 (과) 충돌 다른 라이브러리 사용; 내 프로젝트에 라이브러리 나는 nehe는 OpenGL 튜토리얼에서 헤더 파일 Texture.h 및 tga.h을 포함했다
: /NODEFAULTLIB를 사용합니다. 나는 내 tga.h 파일에
#ifndef TGAISCOOL
#define TGAISCOOL
#endif
을 가지고있다. 이것을 두 번 이상 포함하면 위의 붙여 넣은 링커에서 오류가 발생합니다. 처음 두 가지는 texture.h에서 왔지만 상황은 동일합니다.
무엇이 잘못 되었습니까?
더 많은 코드를 표시하십시오. – SoapBox
링커 오류는'# ifndef'와 아무 관련이 없습니다. 헤더 가드는 컴파일 타임 (즉, 변환 단위당)에서 재 정의 충돌을 방지합니다. 이 문제는 완전히 다릅니다! –