Приветствую Уважаемые коллеги. Вроде как технология 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;
...... |
Как то можно заставить это работать?