2010-02-11 4 views
1

C# 구성 요소와 C++ 구성 요소가있는 프로젝트를 상상해보십시오. C++ 구성 요소는 이전 버전이 아닌 .Net 항목 (VC++ 6.0)입니다. 두 구성 요소간에 개체를 쉽게 전송할 수있는 방법은 무엇입니까? System.Xml.XmlSerializer를 사용하고 싶지만,이 오래된 VC++ 앱으로 .Net 라이브러리를 시작하는 방법을 잘 모르겠습니다.C#과 C++ 간의 개체 교환

아마도 제가 생각하지 않은 훨씬 쉬운 방법이 있습니다. 어떤 제안?

답변

4

COM 사용에 대해 어떻게 생각하십니까? .NET 응용 프로그램은 COM 개체를 모두 소비 할 수 있으며 COM 개체로 자신을 노출 할 수 있습니다.

+0

COM은 놀라 울 정도로 복잡하며 매우 느립니다. 원래의 C++ 프로젝트가 이미 COM 인터페이스를 노출하지 않는 한 C++/CLI를 기본 C++과 .NET 어셈블리 사이의 연결로 사용하는 것이 더 나은 대안입니다. – pyon

+0

@ 에두아르도 : "COM은 놀라 울 정도로 복잡합니다"는 유용한 발언이 아닙니다. OP가 모든 복잡성, 일부 또는 그 이상을 사용할 필요가 있습니까? –

+0

@ 존 손더스 : COM의 중요한 부분 집합은 믿을 수 없을 정도로 복잡합니다. 사소한 부분조차도 있습니다. – pyon

2

C++을 COM 개체로 만드시겠습니까?

5

C++/CLI를 살펴보십시오. 두 세계간에 변환되는 랩퍼를 작성할 수 있습니다.

+0

COM, IMHO를 사용하면 훨씬 좋습니다. – gimpf

+0

@ impf, seconded. COM은 단순히 빤다. – pyon

0

C++ 구성 요소가 C 스타일을 내보내는 관리되지 않는 DLL 인 경우 "Platform Invoke"이 또 다른 옵션입니다. 이 기술은 .NET (C#) 관리 코드에서 관리되지 않는 C++ 코드에 액세스 할 수 있지만 다른 방향에서는 액세스 할 수 없습니다.

0

프로젝트의 크기에 따라 VS6을 C++/CLI로 VC6을 다시 컴파일합니다. 그런 다음 .net 항목에 직접 액세스 할 수 있습니다.

관련 문제