2011-03-06 4 views
4

나는 C++/CLI Wrapper를 사용하여 C# 프레임 워크 (-> 관리)에서 순전히 C++ 라이브러리 (-> 관리되지 않음)에 액세스합니다. C++ 라이브러리가 상태에 대한 정보를 프레임 워크로 푸시 할 수있는 메커니즘을 구축하고자합니다. 내 이해에서 이것은 어떤 점에서 관리되지 않는 코드에서 최소한 관리되는 함수를 호출해야한다는 것을 의미합니다. 이것이 가능하며 어떻게 이것을 할 수 있습니까?관리되지 않는 데이터를 관리되는 코드로 푸시하는 방법은 무엇입니까?

많은 도움을 주셔서 감사합니다. 나는 이것에 대한 (관리) 이벤트를 사용하는 것이 좋습니다

안부, 야콥

답변

7

대리자를 사용하여 관리되지 않는 코드에서 관리되는 메서드를 호출 할 수 있습니다. Marshal :: GetFunctionPointerForDelegate()는 전환을 처리하는 스텁을 만들고 인스턴스 메서드 호출을 지원합니다. 반환 된 포인터를 관리되지 않는 코드에서 사용할 수있는 함수 포인터로 캐스팅 할 수 있습니다.

this answer에서 전체 코드 샘플을 찾을 수 있습니다.

+0

고마워요. 우선이 문제를 해결하려고 노력할 것입니다. –

2

. C++ 래퍼가 이벤트를 발생시키는 C++/CLI 생성 클래스에서 메소드를 호출하도록 할 수 있습니다.

이벤트는 C# 측에서 쉽게 가입 할 수 있으며 다른 C# 기반 이벤트와 마찬가지로 사용됩니다.

+0

흥미로운 제안에 감사드립니다. –

관련 문제