https://support.microsoft.com/ko-kr/kb/130869
Microsoft Visual C++에서 컴파일러는 버전이 특정 버전 보다 오래 된 경우 GUID 초기화 해야 정확히 한 번만. 따라서 두 개의 서로 다른 버전 DEFINE_GUID 매크로 있습니다. 버전에는 단지 기호 이름에 대 한 외부 참조를 선언합니다. 다른 버전은 실제로 기호 이름을 GUID의 값을 초기화합니다. GUID의 기호 이름에 대 한 LNK2001 오류가 나타나면, GUID 초기화 되지 않았습니다.
참고 DEFINE_GUID 매크로 guiddef.h 헤더 파일에는 GUID를 선언합니다. 또한 GUID를 정의 하려면 해당 INITGUID 포함 됩니다. H 헤더 파일에 원본 파일의 GUID를 정의 해야 합니다.
사용자 GUID 두 가지 방법 중 하나로 초기화 해야 수 있습니다.
- 미리 컴파일된 헤더 파일을 사용 하는 경우에 INITGUID 포함 됩니다. H 헤더 파일에서 초기화 되어야 합니다 구현 파일 GUID를 정의 하기 전에. (MFC 응용 프로그램 마법사에서 생성 된 프로젝트.cpp 파일을 기본적으로 사용 됩니다.)
- 미리 컴파일된 헤더를 사용 하지 않는 경우에 OBJBASE를 포함 하기 전에 INITGUID 정의 합니다. H. (OBJBASE. H는 OLE2가 포함 되어 있습니다. H.)
자세한 내용
컴파일러는 버전이 특정 버전 보다 오래 된 경우
OBJBASE에 나타나는 DEFINE_GUID의 정의 다음과 같습니다. H:
#ifndef INITGUID
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, \
b4, b5, b6, b7, b8)
EXTERN_C const GUID FAR name
#else
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, \
b4, b5, b6, b7, b8)
EXTERN_C const GUID name \
= { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
#endif // INITGUID
INITGUID. 찾기 (특히) H:
#undef DEFINE_GUID
// Other code . . .
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, \
b4, b5, b6, b7, b8)
EXTERN_C const GUID __based(__segname("_CODE")) name \
= { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
참고: 것이 이렇게 단 한 번만 각 DLL 또는 EXE 있는지 확인 해야 합니다. 두 개의 서로 다른 소스 파일에 있는 GUID 초기화 하 고 다음 함께 연결 하려는 경우이 오류가 발생 합니다.
컴파일러는 버전이 특정 버전 보다 최신 버전인 경우
OBJBASE에서 DEFINE_GUID의 정의 그대로 표시 됩니다. H는 다음과 같습니다.#ifdef INITGUID
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
EXTERN_C const GUID DECLSPEC_SELECTANY name \
= { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
#else
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
EXTERN_C const GUID FAR name
#endif // INITGUID
#ifndef DECLSPEC_SELECTANY
#if (_MSC_VER >= 1100)
#define DECLSPEC_SELECTANY __declspec(selectany)
#else
#define DECLSPEC_SELECTANY
#endif
#endif
'MFC > Error' 카테고리의 다른 글
OLE/COM Object Viewer - DllRegisterServer in IVIEWERS.DLL failed (0) | 2016.04.18 |
---|---|
Debug Assertion Failed in occont.cpp Line 926 (0) | 2015.11.20 |
C2143 (0) | 2015.06.24 |
C2504 (0) | 2015.05.27 |
LNK 4070 (0) | 2014.09.11 |