0
관리되는 코드에서 사용하려면 관리되지 않는 코드에 래퍼를 어떻게 작성해야합니까? 정확히 그렇게해야합니까?래퍼를 관리되지 않는 코드
관리되는 코드에서 사용하려면 관리되지 않는 코드에 래퍼를 어떻게 작성해야합니까? 정확히 그렇게해야합니까?래퍼를 관리되지 않는 코드
대개 래퍼가 필요하지는 않지만 직접 내 보낸 C 함수가있는 많은 DLL은 [DllImport] 특성으로 피 요크 될 수 있습니다. C 내보내기의 예외는 클라이언트 코드가 메모리를 해제하도록 요구하는 잘못 설계된 DLL 일 것이고 할당 자에 대한 액세스 권한이 없으므로 관리 코드에서 수행 할 수 없습니다.
에 래퍼가있는이있는 경우는 네이티브 C++ 클래스입니다. 관리되는 코드는 클래스의 인스턴스를 만드는 방법 (객체의 크기를 알고 생성자를 호출해야 함)이나 파서를 파괴하는 방법 (소멸자를 호출해야 함)을 만드는 방법을 모르기 때문에 직접 관리하지 못합니다. C++/CLI로하는 것은 꽤 쉽습니다. 매우 기계적으로, SWIG 프로젝트는 자동으로 그것을 할 수 있습니다. 래퍼를 작성하는 방법을 배우는 것보다 도구를 배우는 것이 더 많은 투자입니다.
완전히 이해하지 못했습니다. C 클래스는 pinvoked 수 있지만 C++ 수 없다고? 왜? –
필자는 제 대답 인 두 번째 단락에서이를 구체적으로 설명했습니다. –