Interop(Visual C++ 작업 절차)
업데이트: 2007년 11월
이 페이지에서는 Visual C++를 사용하여 interop와 관련된 작업을 수행하는 데 필요한 도움말의 링크를 제공합니다. 도움말에서 다루는 일반적인 작업의 다른 범주를 보려면 Visual C++ 작업 절차를 참조하십시오.
CLR/네이티브 상호 운용성
혼합형, 순수형 및 안정형 기능 비교
세 가지 /clr 컴파일 모드의 특징을 비교합니다.방법: /clr로 마이그레이션
/clr를 사용하여 네이티브 코드를 컴파일하는 경우와 프로젝트를 관리되는 프로젝트로 변환하는 경우 발생하는 문제에 대해 설명합니다.방법: /CLR을 사용하여 MFC 및 ATL 코드 컴파일
공용 언어 런타임을 대상으로 기존 MFC 및 ATL 프로그램을 컴파일하는 방법에 대해 설명합니다.혼합형(네이티브 및 관리) 어셈블리
관리되는 기능과 관리되지 않는 기능이 함께 사용되는 응용 프로그램을 작성하는 방법에 대해 설명합니다.Interop에 대한 성능 고려 사항(C++)
관리/비관리 interop 전환이 런타임 성능에 미치는 영향을 줄이기 위한 지침을 제공합니다.How to: Declare public and private on Native Classes
관리되는 형식에서 네이티브 형식을 참조하는 방법을 보여 줍니다.How to: Pass a Delegate^ to a Native Function Expecting a Function Pointer
관리되는 구성 요소에서 함수 포인터 매개 변수를 사용하여 네이티브 함수를 호출하고 그 다음 관리되는 구성 요소의 대리자 멤버 함수를 호출하는 방법에 대해 설명합니다.방법: System::String의 문자에 액세스
wchar_t* 문자열을 사용하는 관리되지 않는 함수에 대한 호출 성능을 향상시키기 위해 String 개체의 문자에 액세스하는 방법을 보여 줍니다.방법: 전역 어셈블리 캐시에 네이티브 DLL 추가
COM이 아닌 네이티브 DLL을 전역 어셈블리 캐시에 추가하는 방법에 대해 설명합니다.방법: System::Guid 및 _GUID 사이에 변환
Guid 및 _GUID 간의 변환 방법을 보여 줍니다.방법: char * 문자열을 System::Byte 배열로 변환
char * 문자열을 Byte 배열로 변환하는 가장 효율적인 방법인 Marshal 클래스를 사용하는 방법을 보여 줍니다.방법: 표준 문자열을 System::String으로 변환
표준 C++ 라이브러리 문자열(<string>)을 String으로 변환하는 방법을 보여 줍니다.방법: System::String을 표준 문자열로 변환
String을 표준 C++ 라이브러리 문자열(<string>)로 변환하는 방법을 보여 줍니다.방법: System::String을 wchar_t* 또는 char*로 변환
Vcclr.h에서 PtrToStringChars를 사용하여 String을 네이티브 wchar_t * 또는 char *로 변환하는 방법에 대해 설명합니다.방법: 네이티브 형식으로 핸들 선언
네이티브 스택에서 gcroot 개체를 만드는 방법을 보여 줍니다.방법: 이미지가 네이티브인지 CLR인지 확인
공용 언어 런타임에 대해 이미지가 빌드되었는지 여부를 프로그래밍 방식으로 검사하는 방법을 보여 줍니다.방법: 네이티브 함수에 개체 참조 유지
GCHandle을 래핑하는 gcroot.h를 사용하여 CLR 개체 참조를 관리되지 않는 메모리에 유지하는 방법에 대해 설명합니다.방법: 값 형식에 대한 참조를 네이티브 형식에 저장
boxed 형식에서 gcroot를 사용하여 값 형식에 대한 참조를 네이티브 형식에 유지하는 방법에 대해 설명합니다.방법: 바이트 배열에 대한 포인터 가져오기
첫 번째 인수의 주소를 가져오고 이를 포인터에 할당하여 Byte 배열에서 배열 블록에 대한 포인터를 가져오는 방법에 대해 설명합니다.방법: /clr 컴파일에 네이티브 형식 사용
/clr 컴파일에서 네이티브 형식을 정의하고 어셈블리 내에서 이 네이티브 형식을 임의로 사용하는 방법을 보여 줍니다.방법: C#에서 사용하기 위해 네이티브 클래스 래핑
C#이나 기타 .NET 언어로 작성된 코드에서 사용할 수 있도록 네이티브 C++ 클래스를 래핑하는 방법을 보여 줍니다.
C++ Interop
방법: C++ Interop를 사용하여 ANSI 문자열 마샬링
C++ Interop를 사용하여 관리 코드와 네이티브 코드 사이에 ANSI 문자열을 마샬링하는 방법을 보여 줍니다.방법: C++ Interop를 사용하여 유니코드 문자열 마샬링
C++ Interop를 사용하여 관리 코드와 네이티브 코드 사이에 유니코드 문자열을 마샬링하는 방법을 보여 줍니다.방법: C++ Interop를 사용하여 COM 문자열 마샬링
C++ Interop를 사용하여 관리 코드와 네이티브 코드 사이에 COM 문자열을 마샬링하는 방법을 보여 줍니다.방법: C++ Interop를 사용하여 구조체 마샬링
C++ Interop를 사용하여 관리 코드와 네이티브 코드 사이에 struct를 마샬링하는 방법을 보여 줍니다.방법: C++ Interop를 사용하여 배열 마샬링
C++ Interop를 사용하여 관리 코드와 네이티브 코드 사이에 배열을 마샬링하는 방법을 보여 줍니다.방법: C++ Interop를 사용하여 콜백 및 대리자 마샬링
C++ Interop를 사용하여 관리 코드와 네이티브 코드 사이에 콜백과 대리자를 마샬링하는 방법을 보여 줍니다.방법: C++ Interop를 사용하여 포함 포인터 마샬링
C++ Interop를 사용하여 관리 코드와 네이티브 코드 사이에 포함 포인터를 마샬링하는 방법을 보여 줍니다.방법: out 매개 변수 지정
함수 매개 변수를 out 매개 변수로 지정하는 방법과 이 함수를 C# 프로그램에서 호출하는 방법을 보여 줍니다.
COM Interop
.NET에서 네이티브 COM 서버 사용
.NET 응용 프로그램에서 기존 COM 구성 요소를 사용하는 데 적용할 수 있는 옵션에 대해 설명하고 각 접근 방식에 따른 이점과 단점에 대해 간략하게 설명합니다.방법: TLBIMP와 함께 네이티브 COM 서버 사용
형식 라이브러리 가져오기(Tlbimp.exe) 도구로 관리 코드에서 COM 개체를 사용하는 방법을 보여 줍니다.방법: CRCW와 함께 네이티브 COM 서버 사용
사용자 지정 런타임 호출 가능 래퍼로 관리 코드에서 COM 개체를 사용하는 방법을 보여 줍니다..NET Framework 구성 요소를 COM에 노출
COM 클라이언트와 상호 운용되는 관리 코드를 작성하는 데 필요한 여러 가지 팁을 제공합니다.
P/Invoke
방법: PInvoke를 사용하여 문자열 마샬링
C 스타일 문자열이 사용되는 네이티브 함수를 P/Invoke(플랫폼 호출) 기능을 사용하여 CLR 문자열 형식 System.String을 통해 호출하는 방법에 대해 설명합니다.방법: PInvoke를 사용하여 관리 코드로부터 네이티브 DLL 호출
관리되지 않는 DLL에서 구현되는 함수를 P/Invoke(플랫폼 호출) 기능을 사용하여 관리 코드에서 호출하는 방법을 보여 줍니다.방법: PInvoke를 사용하여 구조체 마샬링
C 스타일 struct가 사용되는 네이티브 함수를 P/Invoke(플랫폼 호출) 기능을 사용하여 관리 코드에서 호출하는 방법에 대해 설명합니다.방법: PInvoke를 사용하여 배열 마샬링
C 스타일 배열이 사용되는 네이티브 함수를 P/Invoke(플랫폼 호출) 기능을 사용하여 관리 코드에서 호출하는 방법에 대해 설명합니다.방법: PInvoke를 사용하여 함수 포인터 마샬링
P/Invoke(플랫폼 호출) 기능을 사용하여 관리되는 함수와 상호 작용할 때 관리되는 대리자를 함수 포인터 대신 사용하는 방법에 대해 설명합니다.방법: PInvoke를 사용하여 포함 포인터 마샬링
P/Invoke(플랫폼 호출) 기능을 사용하여 포함 포인터를 마샬링하는 방법에 대해 설명합니다.방법: 네이티브 함수에서 참조 클래스 수정
PInvoke 서비스를 사용하여 CLR 배열과 함께 참조 클래스를 네이티브 함수에 전달하고 클래스를 수정하는 방법을 보여 줍니다.방법: 정규식을 사용하여 문자열 구문 분석
첫 번째 인수의 주소를 가져오고 이를 포인터에 할당하여 Byte 배열에서 배열 블록에 대한 포인터를 가져오는 방법에 대해 설명합니다.
C++ 지원 라이브러리
- 방법: 마샬링 라이브러리 확장
마샬링 라이브러리를 확장하여 데이터 형식 사이에 더 많은 변환을 제공하는 방법에 대해 설명합니다.
MFC에서 Windows Forms 사용
MFC에서 Windows Form 사용자 정의 컨트롤 사용
MFC Windows Forms 지원 클래스를 사용하여 Windows Forms 컨트롤을 MFC 응용 프로그램 내에서 MFC 대화 상자나 뷰 안에 포함된 ActiveX 컨트롤로 호스팅하는 방법에 대해 설명합니다.Windows Forms/MFC 프로그래밍의 차이점
Windows Forms과 MFC 사이의 프로그래밍 차이에 대한 배경 지식을 제공합니다.Windows Form 사용자 정의 컨트롤을 MFC 대화 상자로 호스팅
CWinFormsDialog 클래스를 사용하여 Windows Forms 컨트롤을 MFC 대화 상자로 호스팅하는 방법에 대해 설명합니다.방법: 사용자 정의 컨트롤 및 호스트 MDI 뷰 만들기
.NET Framework 사용자 정의 컨트롤을 만들고 컨트롤 클래스 라이브러리에서 사용자 정의 컨트롤을 작성한 다음(특히 Windows 컨트롤 라이브러리 프로젝트) 프로젝트를 어셈블리로 컴파일하는 방법을 보여 줍니다.방법: Windows Forms 컨트롤에 명령 라우팅 추가
CWinFormsView를 사용하여 명령을 라우팅하고 사용자 정의 컨트롤에 표시되는 명령 UI 메시지를 업데이트하여 MFC 명령을 처리할 수 있도록 하는 방법을 보여 줍니다.방법: Windows Forms 컨트롤의 속성 및 메서드 호출
사용자 정의 컨트롤 형식의 멤버를 추가하고 IView::OnInitialUpdate에서 이를 초기화하는 것이 좋은 이유에 대해 설명합니다.Windows Form 사용자 정의 컨트롤을 MFC 뷰로 호스팅
Windows Forms 사용자 정의 컨트롤을 MFC 뷰로 호스팅하는 방법에 대해 설명합니다.방법: 대화 상자에 사용자 정의 컨트롤 및 호스트 만들기
새 대화 상자 기반 MFC 프로젝트에 사용자 정의 컨트롤을 추가하는 방법에 대해 설명합니다.방법: Windows Forms에서 DDX/DDV 데이터 바인딩 수행
네이티브 C++ 문자열을 .NET 사용자 정의 컨트롤에 바인딩하는 방법을 보여 줍니다.방법: 네이티브 C++ 클래스에서 Windows Forms 이벤트 싱크
네이티브 C++ 클래스를 사용하여 Windows Forms 컨트롤이나 MFC 매크로 맵 형식의 다른 폼에서 발생한 관리되는 이벤트의 콜백을 받는 방법을 보여 줍니다. 뷰와 대화 상자에서의 이벤트 싱크는 컨트롤에 대해 동일한 작업을 수행하는 경우와 비슷합니다.MFC 대화 상자에서 Windows Form 사용자 정의 컨트롤 호스팅
Windows Forms 사용자 정의 컨트롤을 MFC 대화 상자에 호스팅하는 방법에 대해 설명합니다.방법: Windows Forms에서 DDX/DDV 데이터 바인딩 수행
네이티브 C++ 문자열을 .NET 사용자 정의 컨트롤에 바인딩하는 방법을 보여 줍니다.