C++ CLI 에서 managed 콜백을 unmanaged 로 전달하기

파라미터가 없다면 DelegateToPointer 로 마샬링해서 전달하면되는데, 이러면 파라미터를 마샬링할 기회가 주어지지 않는다는게 문제다. 좀 구글링을 해봤는데, 이런 포스트가 있었다. 스택오버플로-파라미터와 함께 unmanaged 콜백으로 변환하기 채택된 답변을 살펴보면 클래스 구조는 대략 다음과 같다. 클래스 구조 NativeCallbackHandler - msclr::gcroot<OutputManaged^> m_owner (OutputLogManaged) 를 멤버로 보유. OutputLogManaged - native OutputLog* (m_nativeOutputLog) / 1의 Holder 를 보유 (m_nativeHandler)] / 그리고 managed 콜백을 보유 OutputLog - Native Callback 과 void* UserData 를 멤버로 보유. 이해하는데 주요한 클래스는 위 내용 정도인 듯....

July 4, 2017 · nolleh