2010-03-15 4 views
0

I 전체 .NET 프레임 워크 솔루션에 다음 코드가 있습니다.NET 컴팩트 COM 상호 운용성

 

public delegate int CreateObjectDelegate(
      [In] ref Guid classID, 
      [In] ref Guid interfaceID, 
      [MarshalAs(UnmanagedType.Interface)] out object outObject); 

... 

var createObject = (NativeMethods.CreateObjectDelegate) 
    Marshal.GetDelegateForFunctionPointer(
     NativeMethods.GetProcAddress(_modulePtr, "CreateObject"), 
      typeof (NativeMethods.CreateObjectDelegate)); 
object result; 
Guid interfaceId = _guid; 
Guid classID = _classId; 
createObject(ref classID, ref interfaceId, out result); 
 

목적은 런타임에 필요한 COM 객체를 생성하는 것입니다. 모든 .NET Compact Framework에서 가능합니까?

Marshal.GetDelegateForFunctionPointer에는 없습니다.

+0

CoCreateInstance()를 직접 P/Invoke하지 않는 이유는 무엇입니까? 또는 형식 라이브러리 및 TlbImp.exe를 사용합니까? –

+0

나는 일반적으로 다른 것을 동적으로로드하려고하지만 일반적인 COM 라이브러리는 많이 갖고 싶습니다. 나는 포기하고 P/Invoke CreateObject를 사용했기 때문에이 함수를 호출하는 라이브러리에 항상 바인딩되어 있습니다. – markhor

답변

1

CF는 Marshal.GetDelegateForFunctionPointer를 포함하지 않습니다 (어리석은 이유). 나는 수년간 팀에게 요청 해왔다. 함수 포인터를 가져 와서 CF에서 호출하는 방법은 없습니다.