Приветствую Уважаемые коллеги. Вроде как технология com не должна зависеть от битности, но увы - инстанциировать объекты из ZuluLib 8.0 на x64 проекте не получается:
Код |
---|
public const uint CLSCTX_INPROC_SERVER = 0x1; public const uint CLSCTX_LOCAL_SERVER = 0x4; public const uint CLSCTX_ACTIVATE_X86_SERVER = 0x40000; [DllImport("ole32.Dll")] static public extern uint CoCreateInstance(ref Guid clsid, [MarshalAs(UnmanagedType.IUnknown)] object inner, uint context, ref Guid uuid, [MarshalAs(UnmanagedType.IUnknown)] out object rReturnedComObject); /* [DllImport("ole32.dll", EntryPoint = "CoCreateInstance", CallingConvention = CallingConvention.StdCall)] static extern UInt32 CoCreateInstance([In, MarshalAs(UnmanagedType.LPStruct)] Guid rclsid, IntPtr pUnkOuter, UInt32 dwClsContext, [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid, [MarshalAs(UnmanagedType.IUnknown)] out object rReturnedComObject);*/ ..... object o; Guid clsid = new Guid("{12507098-0B01-11D2-B55D-444553540000}");//ZuluLib.PolyLine Guid iidIUnknown = new Guid("{00000000-0000-0000-C000-000000000046}"); uint uiError = Ole32Methods.CoCreateInstance(ref clsid, null, Ole32Methods.CLSCTX_LOCAL_SERVER | Ole32Methods.CLSCTX_INPROC_SERVER /*| Ole32Methods.CLSCTX_ACTIVATE_X86_SERVER -не работает к сожалению(((*/ , ref iidIUnknown, out o); //увы все что ниже - x86 only Type tPolyline = Type.GetTypeFromCLSID(new Guid("{12507098-0B01-11D2-B55D-444553540000}"));// typeof(ZuluLib.PolyLine).GUID); Object oPolyline = Activator.CreateInstance(tPolyline); ZuluLib.PolyLine p = (ZuluLib.PolyLine)oPolyline; ...... |
Как то можно заставить это работать?