문제

C#의 참조 .dll로 최종 사용을 위해 기본 C ++에서 관리 된 C ++로 많은 수의 .h 및 .lib 파일을 포장하려고합니다.

기본 C ++ 함수 중 일부에는 반환 유형의 무효가 있습니다*. 값을 통화 코드로 전달할 때 이것을 처리하는 방법을 잘 모르겠습니다. 예를 들어 : C# 앱이 DLL 래퍼를 호출하는 경우 기본 전화에서 무엇을 반환합니까?

void* start(ThreadFunc,void *, unsigned *);

나는 현재 일반 시스템에서 반환을 박스를 박스를 꺼내려고 시도하고있다 :: Object^는 운이 없다. 이것은 래퍼의 호출입니다.

m_NativeThread->start(cb, 
        GCHandle::ToIntPtr(GCHandle::Alloc(o)).ToPointer(),
        static_cast<unsigned int*>(GCHandle::ToIntPtr(GCHandle::Alloc(u)).ToPointer())));

누구든지 솔루션을 제공 할 수 있습니까?

도움이 되었습니까?

해결책

intptr로 만들 수 있습니까? 클라이언트가 공허*와 어떤 관련이있을 것으로 기대하십니까?

다른 팁

관리 된 코드가 void*에서 데이터를 볼 필요가있는 경우 :

관리되지 않는 메모리에 무효*를 관리 할 수는 없습니다. 이것을 관리 메모리로 바꾸려면 Marshal.copy () 또는 Marshal.ptrtostructure ()를 사용해야합니다. 물론 공허*가 가리키는 데이터의 유형을 알고있는 경우에만 효과가 있습니다. 원천

관리 코드가 void*에서 데이터를 볼 필요가없는 경우 :

관리 된 코드가 그것이 무엇인지 볼 필요가없는 경우 intptr에 저장하고 나중에 관리되지 않는 코드로 다시 전달하십시오. 원천

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top