2009-08-22 4 views
7

이 질문은 이전 질문,하지만 난 진정으로 만족스러운 해결책을 찾을 적이있다 - 나는 C#으로 작성된 클래스 라이브러리를 가지고 있고, 나는 기존 네이티브 C++ 응용 프로그램에서 호출 할/clr 또는 COM없이 C++에서 C#을 호출 하시겠습니까?

합니다. 호스트 응용 프로그램은 Windows 응용 프로그램 인 Windows & Linux에서 컴파일 된 진정한 기본 응용 프로그램입니다. 그렇다면 Windows에서 Microsoft .NET을 사용하고 Linux에서 Mono를 사용한다고 가정하고 C# 클래스 라이브러리를 호출하도록하려면 어떻게해야합니까?

SWIG를보고 Windows에서 COM 인터페이스로 랩핑했는데 크로스 플랫폼에서 작동하는 표준 인식 솔루션이 있습니까? 즉 범용이며 Microsoft .NET과 Mono 모두에서 작동합니다.

솔루션은 C# 도메인의 전체 클래스 인터페이스를 C++ 도메인에 노출해야합니다.

비슷한 질문은, 예를 들어,은 Windows 솔루션에 초점 -

Call C# methods from C++ without using COM

+0

모노 인에게 물어 보았습니까? 그리고 어떻게 수출했는지 물어보아야 할 것입니다. –

답변

5

이 크로스 플랫폼을하고 싶은 경우에, 나는 100 % 모노 접근 방식으로가는 것이 좋습니다.

모노에는 리눅스와 Windows에서 작동하는 깨끗한 Embedding API이 있습니다.

+0

좋은 답변, 윈도우에 모노를 임베딩하는 것은 정말로 내가 뭘 찾고 있었는지 또한 모두 매우 수동으로 보입니다. 라이브러리에 전체 인터페이스를 표시하기 위해 보일러 플레이트 코드를 많이 작성해야합니다. 시간이 많이 걸리고 깨지기 쉽기 때문에 JNI를 생각 나게합니다. SWIG 나 COM 인터페이스를 노출하는 것과 같은 자동화 된 방법이 있는지 궁금합니다. – titanae

+0

COM은 잘 작동하지만 리눅스에서는 그렇지 않습니다. SWIG는 다른 방향으로가는 것만으로 좋습니다 ... 죄송합니다. –