혼합형(네이티브 및 관리형) 어셈블리

혼합 어셈블리는 관리되지 않는 컴퓨터 명령과 MSIL 명령을 모두 포함할 수 있습니다. 이렇게 하면 네이티브 C++ 라이브러리와의 호환성을 유지하면서 .NET 구성 요소에서 호출하고 호출할 수 있습니다. 개발자는 혼합 어셈블리를 사용하여 .NET 및 네이티브 C++ 코드를 혼합하여 애플리케이션을 작성할 수 있습니다.

예를 들어 네이티브 C++ 코드로 완전히 구성된 기존 라이브러리는 /clr 컴파일러 스위치를 사용하여 하나의 모듈만 다시 컴파일하여 .NET 플랫폼으로 가져올 수 있습니다. 이 모듈은 .NET 기능을 사용할 수 있지만 애플리케이션의 re기본der와 호환되는 기본. 동일한 파일 내에서 함수별로 관리되는 컴파일과 네이티브 컴파일 중에서 결정할 수도 있습니다(관리형, 관리되지 않음 참조).

Visual C++는 /clr 컴파일러 옵션을 사용하여 혼합 관리되는 어셈블리 생성만 지원합니다. /clr:pure/clr:safe 컴파일러 옵션은 Visual Studio 2015에서 더 이상 사용되지 않으며 Visual Studio 2017에서는 지원되지 않습니다. 순수하거나 검증 가능한 관리되는 어셈블리가 필요한 경우 C#을 사용하여 만드는 것이 좋습니다.

이전 버전의 Microsoft C++ 컴파일러 도구 집합은 혼합, 순수 및 확인 가능한 세 가지 유형의 관리되는 어셈블리를 생성하도록 지원했습니다. 후자의 두 가지는 순수 및 확인 가능한 코드(C++/CLI)에서 설명합니다.

이 섹션의 내용

방법: /clr로 마이그레이션
애플리케이션에서 .NET 기능을 도입하거나 업그레이드하는 데 권장되는 단계를 설명합니다.

방법: /clr을 사용하여 MFC 및 ATL 코드 컴파일
공용 언어 런타임을 대상으로 기존 MFC 및 ATL 프로그램을 컴파일하는 방법에 대해 설명합니다.

혼합형 어셈블리 초기화
"로더 잠금" 문제 및 솔루션에 대해 설명합니다.

혼합형 어셈블리에 대한 라이브러리 지원
/clr 컴파일에서 네이티브 라이브러리를 사용하는 방법에 대해 설명합니다.

성능 고려 사항
혼합 어셈블리 및 데이터 마샬링의 성능에 미치는 영향을 설명합니다.

애플리케이션 도메인 및 Visual C++
애플리케이션에 대한 Visual C++ 지원에 대해 설명합니다기본.

이중 펑킹
관리되는 함수에 대한 네이티브 진입점의 성능 영향에 대해 설명합니다.

/clr로 빌드된 COM 개체를 사용할 때 CLR 종료 시 예외 방지
/clr로 컴파일된 COM 개체를 사용하는 관리되는 애플리케이션을 적절하게 종료하는 방법을 설명합니다.

방법: CRT 라이브러리 DLL에 대한 종속성을 제거하여 부분적으로 신뢰할 수 있는 애플리케이션 만들기
msvcm90.dll에 대한 종속성을 제거하여 Visual C++를 사용하여 부분적으로 신뢰할 수 있는 공용 언어 런타임 애플리케이션을 만드는 방법을 설명합니다.

혼합 어셈블리에 대한 코딩 지침에 대한 자세한 내용은 관리/관리되지 않는 코드 상호 운용성에 대한 개요를 참조하세요.

참고 항목