http://support.microsoft.com/kb/94248/ko
이 페이지에서
요약
이 문서에는 다음과 같은 섹션이 있습니다.
섹션 1: C 런타임 (CRT) 라이브러리 중 세 가지 사용할 수 있는
섹션 2: DLL에서 CRT 라이브러리를 만들 때 사용
섹션 3: NTWIN32 사용합니다.MAK 빌드 프로세스를 간소화 하기
섹션 4: 문제가 여러 CRT 라이브러리 사용 하면 발생 합니다.
섹션 5: 라이브러리 형식 혼합
섹션 2: DLL에서 CRT 라이브러리를 만들 때 사용
섹션 3: NTWIN32 사용합니다.MAK 빌드 프로세스를 간소화 하기
섹션 4: 문제가 여러 CRT 라이브러리 사용 하면 발생 합니다.
섹션 5: 라이브러리 형식 혼합
추가 정보
섹션 1: C 런타임 (CRT) 라이브러리 중 세 가지 사용할 수 있는
Win32 SDK와 함께 제공 되는 C 런타임 라이브러리의 세 가지 형식이 있습니다.- LIBC입니다.LIB 단일 스레드 프로그램에 정적으로 링크 된 라이브러리입니다.
- LIBCMT입니다.LIB 다중 스레드 프로그램을 지 원하는 정적으로 링크 된 라이브러리입니다.
- CRTDLL입니다.LIB는 가져오기 라이브러리 CRTDLL에 대 한.DLL 다중 스레드 프로그램을 지원 합니다. CRTDLL입니다.DLL 자체는 Windows NT 일부입니다.
섹션 2: DLL에서 CRT 라이브러리를 만들 때 사용
C 런타임 라이브러리를 사용 하 여 DLL을 빌드할 때 CRT 제대로 초기화를 하거나
- DllMain() 초기화 함수 이름을 지정 해야 하 고 링커 옵션-entry:_DllMainCRTStartup@12 기능을 사용 하 여 진입점을 지정 해야 합니다 또는-
- DLL의 진입점 프로세스에 CRT_INIT()를 명시적으로 호출 해야 연결 및 프로세스 분리
모든 Win32 SDK 샘플 첫 번째 방법을 사용합니다. 예를 들어 사용 됩니다. 또한 DllEntryPoint() 및 DllMain()에 대 한 Visual C++ 문서에 대 한 Win32 프로그래머 참조를 참조 하십시오. 참고 DllMainCRTStartup() CRT_INIT() 및 CRT_INIT()를 호출 하는 경우 응용 프로그램 DllMain()를 호출 합니다.
두 번째 메서드를 사용 하 고 DllMainCRTStartup() 및 DllMain()를 사용 하는 대신 사용자가 직접 CRT 초기화 코드를 호출 하려면 두 가지 방법 있습니다.
- 초기화 코드를 수행 하는 항목 함수가 없으면 CRT_INIT() dll 진입점으로 지정 하면 됩니다.
-entry:_CRT_INIT$(DLLENTRY)-또는-
- 경우 있습니다 * do * 가리키고 진입점의 다음을 수행 합니다 직접 DLL 항목이 있는:
- 이 프로토타입을 사용 하 여 CRT_INIT()에 대 한.
BOOL WINAPI _CRT_INIT (HINSTANCE hinstDLL, fdwReason DWORD, lpReserved를).CRT_INIT() 반환 값에 대 한 내용은 DllEntryPoint; 설명서를 참조 하십시오.
- DLL_PROCESS_ATTACH 및 DLL_THREAD_ATTACH (참조 "DllEntryPoint" Win32 api에서는 이러한 플래그에 대 한 자세한 내용은 참조), CRT_INIT(), 먼저 전에 모든 C 런타임 함수 라고 하거나 모든 부동 소수점 연산을 수행 합니다.
- 프로세스/스레드 초기화/종료 코드를 호출 합니다.
- DLL_PROCESS_DETACH 및 DLL_THREAD_DETACH 모든 C 런타임 함수를 호출 하 고 모든 부동 소수점 작업이 완료 된 후 CRT_INIT()를 마지막으로 호출 합니다.
다음은 시기 및 DLL 진입점에서 CRT_INIT()이 호출 하 게 하는 방법을 보여 줍니다 기초 예제 항목 포인트 함수가입니다.BOOL WINAPI DllEntryPoint(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved) { if (fdwReason == DLL_PROCESS_ATTACH || fdwReason == DLL_THREAD_ATTACH) if (!_CRT_INIT(hinstDLL, fdwReason, lpReserved)) return(FALSE); if (fdwReason == DLL_PROCESS_DETACH || fdwReason == DLL_THREAD_DETACH) if (!_CRT_INIT(hinstDLL, fdwReason, lpReserved)) return(FALSE); return(TRUE); }
- 이 프로토타입을 사용 하 여 CRT_INIT()에 대 한.
섹션 3: NTWIN32 사용합니다.
매크로 NTWIN32에 정의 되어 있습니다.컴파일을 사용 합니다.
$(cvarsdll) for apps/DLLs using CRT in a DLL
$(conlibsdll) for console apps/DLLs using CRT in a DLL $(guilibsdll) for GUI apps using CRT in a DLL
섹션 4: 문제가 여러 CRT 라이브러리 사용 하면 발생 합니다.
C 런타임 호출 하는 응용 프로그램 연결 하는 C 런타임 호출에서 사용할 수 있는 DLL를 모두와 연결 된 하나는 정적으로 링크 된 C 런타임 라이브러리 (LIBC.- 버퍼링 된 스트림 핸들을 전달 하면 있습니다.
- C 런타임 호출으로 메모리를 할당 하는.
- Errno 전역 변수 값을 설정 하거나 해당 합니다.
섹션 5: 라이브러리 형식 혼합
DLL CRTDLL와 연결할 수 있습니다.때 다음 믹싱 라이브러리 형식을 따릅니다.
- 만 CRT 파일 핸들을 만든 CRT 모듈에 의해에서 운영 될 수 있습니다.
- 만 CRT 파일 * 포인터를 만든 CRT 모듈에 의해에서 운영 될 수 있습니다.
- CRT 함수가 malloc ()로 할당 된 메모리 해제 또는 할당 된 CRT 모듈에 의해 다시 할당할 수 있습니다.
- .EXE is linked with MSVCRT.LIB - DLL A is linked with LIBCMT.LIB - DLL B is linked with CRTDLL.LIB
경우는.
DLL는 malloc () 사용 하 여 메모리 블록을 할당 합니다 free (), _expand(), 또는 realloc() 블록의 동작에 DLL A만 호출할 수 있습니다.
참고: 모든 세 가지 모듈 CRTDLL로 링크 된 경우.
때 LIBC 사용 하 여 Dll을 연결 합니다.
DLL는 malloc () 사용 하 여 메모리 블록을 할당 합니다 free (), _expand(), 또는 realloc() 블록의 동작에 DLL A만 호출할 수 있습니다.
참고: 모든 세 가지 모듈 CRTDLL로 링크 된 경우.
속성
기술 자료: 94248 - 마지막 검토: 2004년 8월 30일 월요일 - 수정: 1.1
본 문서의 정보는 다음의 제품에 적용됩니다.
- Microsoft Win32 Software Development Kit (SDK) 3.1
- Microsoft Win32 Software Development Kit (SDK) 3.5
- Microsoft Win32 Software Development Kit (SDK) 3.51
- Microsoft Win32 Software Development Kit (SDK) 4.0
키워드: |
kbmt KB94248 KbMtko |
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
'MFC' 카테고리의 다른 글
TCP/IP 최대 재전송 시간 제한은 수정 하는 방법 (0) | 2015.02.23 |
---|---|
Windows TCP/IP 레지스트리 항목 (0) | 2015.02.23 |
MFC Cryptography CAPICOM (0) | 2014.10.24 |
콘솔창에 printf 등의 결과 출력 (0) | 2014.07.23 |
MFC에서 hWnd와 hinst 얻기 (0) | 2014.04.11 |