우리는 C++ 코드에서 호출하기를 원하는 원시 Win32 C++ 코드와 C# 어셈블리를 가지고 있습니다. 나는 우리의 optios를 다음과 같이 요약한다 :C++ 호출 C# 옵션
COM을 사용한다. C# 코드는 추가 속성 (GUID, COMVisible)으로 장식되어야합니다. C# 어셈블리는 regasm에 등록해야하며 COM을 통해 네이티브 C++ 코드에서 사용할 수 있습니다.
C++/CLI (이전 관리 C++) 래퍼 클래스를 사용하십시오. C++ 클래스는 네이티브 C++ 프로젝트에 추가 될 수 있습니다. 이 클래스는/clr로 컴파일됩니다. 네이티브 C++ 코드는 .Net 코드를 호출하는 C++/CLI 클래스를 호출합니다. COM 관련 없음. CLR은 C++/CLI 확장에 의해 처리되는 마샬링과 함께 마술에 의해 시작됩니다.
네이티브 C++ 코드에서 CLR 인스턴스를 호스트합니다.
래퍼 클래스에 대한 필요성을 잃어 버리는 것 외에도 옵션 2보다 이점이 많으므로 옵션 3을 할인하려고합니다. 그래서 문제는 옵션 1과 옵션 2의 장단점은 무엇입니까?
미리 감사드립니다.