2011-02-09 3 views

답변

2

대개 래퍼가 필요하지는 않지만 직접 내 보낸 C 함수가있는 많은 DLL은 [DllImport] 특성으로 피 요크 될 수 있습니다. C 내보내기의 예외는 클라이언트 코드가 메모리를 해제하도록 요구하는 잘못 설계된 DLL 일 것이고 할당 자에 대한 액세스 권한이 없으므로 관리 코드에서 수행 할 수 없습니다.

에 래퍼가있는이있는 경우는 네이티브 C++ 클래스입니다. 관리되는 코드는 클래스의 인스턴스를 만드는 방법 (객체의 크기를 알고 생성자를 호출해야 함)이나 파서를 파괴하는 방법 (소멸자를 호출해야 함)을 만드는 방법을 모르기 때문에 직접 관리하지 못합니다. C++/CLI로하는 것은 꽤 쉽습니다. 매우 기계적으로, SWIG 프로젝트는 자동으로 그것을 할 수 있습니다. 래퍼를 작성하는 방법을 배우는 것보다 도구를 배우는 것이 더 많은 투자입니다.

+0

완전히 이해하지 못했습니다. C 클래스는 pinvoked 수 있지만 C++ 수 없다고? 왜? –

+1

필자는 제 대답 인 두 번째 단락에서이를 구체적으로 설명했습니다. –

관련 문제