Visual C++ 2005 라이브러리의 변경 사항
업데이트: 2007년 11월
다음 단원에서는 Visual C++와 함께 제공되는 라이브러리의 업데이트 및 주요 변경 내용에 대해 설명합니다.
단원 내용
일반적인 라이브러리 변경 사항
주요 변경 사항
혼합 모드에서 네이티브 생성자가 관리되는 생성자보다 먼저 호출됩니다. 단일 실행 파일의 경우 네이티브 개체와 관리되는 개체가 동일한 컴파일 단위에 있는지 여부와 상관없이 모든 네이티브 전역 개체의 생성자가 관리되는 전역 개체의 생성자보다 먼저 호출됩니다.
따라서 네이티브 생성자보다 먼저 호출되는 관리되는 생성자를 사용하는 응용 프로그램이 올바르게 작동하지 않을 수 있습니다.
전역 개체 사이에 종속 관계가 있는 경우 관리되는 개체에서 네이티브 개체로의 종속성만 있도록 해야 합니다. 개체가 관리되는 개체인지 네이티브 개체인지 확인하는 가장 좋은 방법은 해당 방식으로 빌드되는 컴파일 단위에 이 개체를 추가해 보는 것입니다.
매니페스트 기반 어셈블리 생성을 지원하기 위해 라이브러리에서 변경된 사항
Visual C++ 2005의 경우 표준 C++ 라이브러리와 ATL, MFC 및 CRT 라이브러리는 매니페스트가 포함된 side-by-side 공유 어셈블리입니다. 마찬가지로, 컴파일러와 링커는 mt.exe를 사용하여 매니페스트를 생성하도록 기본 설정되어 있습니다. 이렇게 하면 모든 Visual C++ 실행 파일이 ATL, MFC 및 CRT에 대한 종속성을 나타내는 매니페스트를 갖도록 할 수 있습니다. 자세한 내용은 Visual C++ Libraries as Side-by-Side Shared Assemblies, 배포(C++) 및 C/C++ 격리된 응용 프로그램 및 side-by-side 어셈블리 빌드를 참조하십시오.
메이크파일을 사용하여 프로젝트를 빌드하는 경우 방법: C/C++ 응용 프로그램에 매니페스트 포함을 참조하십시오.
혼합형 어셈블리에 대한 라이브러리 지원
Visual C++ 2005에서는 표준 C++ 라이브러리와 ATL, MFC 및 CRT 라이브러리를 /clr로 컴파일된 혼합형 어셈블리로 사용할 수 있습니다. 이러한 혼합형 어셈블리를 사용하면 사용자의 코드에 네이티브 코드와 MSIL 기반 __clrcall 코드가 함께 포함되어 있는 경우 기존 함수를 모두 사용할 수 있습니다. 자세한 내용은 혼합형(네이티브 및 관리) 어셈블리를 참조하십시오.
혼합형 어셈블리 초기화
Visual C++ .NET 및 Visual C++ .NET 2003에서 혼합 DLL에 적용되던 "로더 잠금" 문제를 해결할 수 있도록 Visual C++ 2005의 라이브러리 지원 기능이 변경되었습니다. 그러나 DllMain 코드에서 CLR에 액세스할 수 없다는 제한은 계속 적용됩니다. 자세한 내용은 혼합형(네이티브 및 관리) 어셈블리를 참조하십시오.
순수 모드 컴파일에서 지원되지 않는 라이브러리
ATL 및 MFC 라이브러리는 Visual C++ 2005의 순수 모드 컴파일(/clr:pure)에서 지원하지 않습니다.