2014-06-13 4 views
0

관리되는 C# WPF .Net 응용 프로그램에서 호출하고 싶은 오래된 MFC 코드가 있습니다. 네이티브 코드를 래핑하기 위해 필자는 1) P/Invoke 2) C++/CLI 또는 3) COM을 사용할 수있는 옵션이 있음을 발견했습니다.관리되는 코드에서 사용하기 위해 MFC 네이티브 코드 래핑

하지만 또 다른 우려가 있습니다. MFC에서 파생 된 클래스를 포함 할 때마다 MFC 확장 DLL을 빌드해야한다는 내용을 읽었습니다. 또한이 DLL의 호출 측은이 DLL이 관리 코드 내에서 작동하지 않는다고 생각하는 MFC 환경이어야합니다.

내 응용 프로그램에는 기본 MFC 클래스에서 파생 된 클래스가 있습니다. 나는 문서 뷰 아키텍처를 사용하고, Doc, View, MainFrame, App 클래스는 MFC 클래스에서 파생됩니다. MFC 확장 DLL을 빌드하는 것 외에 다른 옵션이 없다는 것을 의미하며 관리되는 응용 프로그램에서이 DLL을 사용할 방법이 없습니다. 이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까?

+0

MFC없이 네이티브 코드를 다시 작성하는 것이 좋습니다. 도움이 될까요? 나는 그것을 DLL로 컴파일하고, C# .NET 어플리케이션으로부터 그 dll을 호출 할 수 있기를 원한다. – user2654449

+1

Pinvoke는 유용하지 않을 가능성이 높으며 C++ 메서드를 호출 할 수 없습니다. COM은 기존 코드가 COM 호출 가능하지 않기 때문에 심층적 인 경향이 있습니다. C++/CLI는 일반적으로 최선의 선택입니다. 확장 DLL에 관한 일반적인 MFC 호프라는 모두 적용됩니다 (차이는 없습니다). –

+0

@HansPassant,하지만 관리되는 코드에서 참조 할 때 MFC 확장 DLL을 사용할 수 없습니까? 내 원시 코드에서 MFC 부분을 없애고 WinAPI를 사용하여 Windows 응용 프로그램으로 다시 작성해야하는지 결정하려고합니다. – user2654449

답변

1

MFC 코드를 MFC ActiveX 프로젝트에 캡슐화하고 상호 운용성을 사용하여 관리되는 코드 응용 프로그램에서 호출하지 않는 이유는 무엇입니까? 나에게 가장 쉬운 해결책 인 것 같아.