RUS  ENG 

Использование ZuluLib объектов (ver 8.0) во внешнем x64 c# приложении

Страницы: 1
RSS
Использование ZuluLib объектов (ver 8.0) во внешнем x64 c# приложении
 
Приветствую Уважаемые коллеги. Вроде как технология 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;
......

Как то можно заставить это работать?

 
Артем, добрый день!
В 64-битный процесс не могут быть загружены 32-битные модули, а ядро ZuluGIS 8.0 только 32-битное.
В 64-битном проекте можно использовать ядро новой версии ZuluGIS 2021 (10.0), сейчас сделаны и 32-битная и 64-битная версии.
Рекомендуем переходить на новую версию.
 
Благодарю за ответ - увы переход на новую версию вне зоны моей ответственности(.
Страницы: 1