2013-09-01 2 views
0

저는 C++로 프로그래밍하고 .NET 그래픽 인터페이스 응용 프로그램에 배포 할 수있는 Open CV로 작업해야합니다. C#으로 인터페이스 특성을 연구하고 싶습니다.동일한 .NET 응용 프로그램에서 C# 및 C++ 코드?

이 용도로 가장 적합한 방법은 무엇입니까?

+2

"Open CV C#"에 대한 google의 첫 번째 결과 : http://www.emgu.com/wiki/index.php/Main_Page 도움이 되나요? – dtb

+1

또한 C + +의 관리되는 버전 인 [C++/CLI] (http://en.wikipedia.org/wiki/C%2B%2B/CLI)를 학습하는 것이 좋습니다.이 버전은 사이에 interop 코드를 만드는 데 매우 유용합니다. 네이티브 C++ 및 C#. –

+0

아하, egmu CV에 대해 알고 있지만, 래퍼를 사용하고 싶지는 않습니다. 당신은 약간의 C++/CLI 응용 프로그램에 대해 조금 더 설명하거나 대답 할 수 있습니까? @ChrisO – diegoaguilar

답변

3

동일한 응용 프로그램에서 C# 및 C++을 사용할 수있는 두 가지 방법을 알고 있습니다.

가장 간단한 방법은 C++ 및 C#으로 작성된 구성 요소를 분리하여 하나의 구성 요소가 다른 구성 요소에 의존하지만 서로 종속되지 않도록하는 방법입니다. 이 경우에는 C#에 하나, VC++에 하나, 그리고 다른 하나를 참조하는 두 개의 어셈블리를 생성하면됩니다. 가장 간단한 방법은 Visual Studio의 UI에서 지원되기 때문입니다.

그러나 상호 의존성이있는 경우이 접근법은 작동하지 않습니다. 즉, 클래스 A는 클래스 B에 대해 알아야하고 클래스 B는 클래스 A에 대해 알아야하며 클래스 A는 C++ 및 클래스 B로 작성되어야합니다 C#으로 작성됩니다. 그와 같은 다른 언어로 클래스를 작성하는 것도 가능합니다. NET의 다중 파일 어셈블리 또는 netmodules라는 덜 알려진 기능을 사용합니다.

자세한 내용은 How to: Build a Multifile AssemblyMultifile Assemblies을 참조하십시오. C++ 컴파일러는 일반적으로 다른 컴파일러보다 영리하다는 것을 기억하는 것이 유용합니다. 절차가 C#에서 NetModule로 반을 컴파일 한 다음 C++ 컴파일러와 링커로 전달하여 C++ 파트에 연결하고 최종 어셈블리를 만들 수 있음을 기억합니다.

대안적인 접근법으로, 소량의 C# 코드를 작성하려는 경우 사용하려는 .NET 기능에 대한 VC++ 구문을 배우고 C#을 모두 피하는 것이 좋습니다. VC++는 C#이 할 수있는 것처럼 관리되는 인터페이스와 타입을 선언 할 수 있으며, C#에서 많은 실제 코드를 작성하지 않는다면 더 쉽습니다.

관련 문제