이 포스트를 만든 목적

  • 책 보려고

이 포스트의 준비물

  • gVim 7.3

참고 서적

  • 소설같은 C# 3판
  • Effective C#

참조 링크

내용

Interop은 무엇인가?

  • 다른 언어로 개발된 어셈블리(DLL 등)를 특정 환경에서 사용할 수 있게 하는 기술을 뜻한다.

C# Interop은 무엇인가?

  • CLR을 사용하지 않는 어셈블리(DLL 등)을 CLR 에서 사용 될 수 있게 하는 기술을 뜻한다.

왜 Interop을 최소화 해야 하는가?

  • 비용의 문제 때문에
    예) managed 힙과 unmanaged 힙 사이를 오고가는 marshalling 비용

  • managed 와 unmanaged 를 오고가는 코드 작성 비용 때문에

그럼에도 불과하고, C# Interop을 사용해야 한다면, 다음의 3가지 방법을 선택하면 된다.

  • COM Interop
    - 써본적이 없어서 모르겠다.

  • Platform Invoke(P/Invoke)
    - DllImport 를 사용하는 방법이다.
    장점 : 간단하다.
    단점 : 함수의 갯수가 많아질 수록 함수를 맞쳐주는 작업이 힘들다.

  • Managed C++ (C++/CLI)
    - C++/CLI 로 Native 코드들을 포장하는 방법
    장점 : 코드를 완전히 제어 할 수 있다.
    단점 : 지루한 포장 작업을 일일이 해야 한다.

책에는 없지만, P/Invoke를 특화시킨 방법이 있다.

  • SWIG
    - C/C++ 로 개발된 코드를 지원하는 언어로 포장된 코드를 만들어 주는 프로그램이다.
    장점 : 손쉽다.
    단점 : 새기술을 익혀야 한다.

결론

  • SWIG를 우선 써보고, 불가능한 것들은 PInvoke나 Managed C++ 을 선택해서 사용하는게 좋겠다.

여담

  • 엄청나게 졸렵다.
  • 어제 정리했어야 하는건데, 피곤해서 그냥 자버렸다.


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기