2010-06-10 4 views
2

이전에 C++ (및 MFC)로 작성된 동일한 엔진을 호출해야하는 MFC (VC6), VB6 및 C# 응용 프로그램이있는 소프트웨어가있었습니다. 엔진은 속도면에서 C++을 필요로했습니다. 당시에 우리는 COM을 인터페이스로 사용하기로 결정했습니다. 마샬링 등에서 가장 적은 이슈를 사용하여 COM을 사용할 수 있기 때문에하나의 dll에서 관리되는 C++/MFC가 혼합 될 수 있습니까?

MFC 애플리케이션은 이제 더 이상 사용되지 않으며 VB6을 덤프하기로 결정했습니다. 왼쪽은 C#입니다.

그냥 COM 엔진을 그대로 둘 수 있지만 COM 등록 등을 피하고 함께 작업 할 수있는 관리 된 인터페이스가 있어야합니다. COM 등록은 사람의 컴퓨터에 문제가있는 경우 지원 문제를 일으키는 경우가 있습니다.

기존의 관리되지 않는 C++/MFC 및 .NET 프런트 엔드 인터페이스에서 dll을 사용할 수 있습니까?

답변

0

C++/CLI는 둘 다 수행 할 수 있습니다.

3

내부적으로 MFC 클래스를 사용하는 C++/CLI DLL을 사용할 수 있습니다. C++/CLI를 사용하는 혼합 모드 DLL 작성의 한 가지 좋은 점은 DLL 내에서 (C++/CLI 규칙에 따라) 네이티브 C++를 사용할 수 있고 "그냥 작동합니다"라는 것입니다.

그러나 목표는 C# 응용 프로그램에서 호출 할 수있는 깨끗하고 관리 된 래퍼를 제공하는 것입니다.

즉, 모든 사용자 인터페이스 요소에 MFC를 사용하지 않는 것이 좋습니다. C#에서 MFC 콘텐츠를 호스팅 할 수는 있지만 문제가되는 경우가 많습니다. C++ 엔진을 사용하여 (시간이 중요한 작업) C++/CLI를 사용하여 훌륭하고 깨끗한 관리되는 래퍼에 레거시 코드를 캡슐화하는 것이 좋습니다.

+0

MFC에는 사용자 인터페이스가 없습니다. 우리는 CString과 CStringArray를 주로 사용하고 CArray를 때때로 사용합니다. 좋은 자습서를 알고 있습니까? –

+0

http://www.functionx.com/cppcli/index.htm - 대부분 "CLI"부분을 배우면 MFC 문제와 관련하여 C++과 동일합니다 ... –

+0

실용적인 문제 - MFC dll을 만들고/clr을 추가하거나 클래스 라이브러리를 만들고 비 관리 코드에 태그를 붙여야합니다. 해당 링크에 대해서도 감사드립니다. –

관련 문제