Йоксель » Главный форум

64 битный Йоксель

(14 posts)
  1. Serginio
    Участник

    Собственно если таковой. Под 64 разрядной виндой в 8.1 в comcntr.dll не видит йокселя, возможно проблема 64 разрядности.

    Отправлено 14 года(лет) назад #
  2. Такового нет. Но, вообще, приложения под 64-бита могут работать с 32-битными COM-серверами. Правда, это будет медленнее - потому что 32-битный сервер будет загружен в фейковый 32-битный процесс и обмен данными будет происходить через маршаллинг между процессами.

    Отправлено 14 года(лет) назад #
  3. Serginio
    Участник

    Спасибо

    Отправлено 14 года(лет) назад #
  4. Увы, Йоксель как 32 битная dll не при каких раскладах не будет работать на 64 битном
    сервере. Именно на сервере, а не на клиентском подключении к серверу. Посему осмелюсь
    просить автора все же сделать 64 битную сборку COM сервера Йоксель, поскольку ну уж
    очень нужный для нас продукт, а политика партии велит использовать только 64 битные
    сервера. В нашем случае мы используем Йоксель для вывода отчетов из 1С на наш корпоративный портал. Отчеты работают через Web сервис 1С. Поскольку генерить HTML на
    стороне сервера 1С умеет полько в платформе 8.2, то без Йокселя с его возможностью
    делать из отчета 1С картинку, ну никак не обойтись.
    Думаю данный вопрос будет подниматься все чаще и чаще в связи с тем, что более Microsoft
    не будет выпускать 32 битные версии серверных ОС.

    Заранее спасибо.

    Отправлено 14 года(лет) назад #
  5. Увы, Йоксель как 32 битная dll не при каких раскладах не будет работать на 64 битном
    сервере.

    Ну-ну. Я же говорю, 64-битные приложения МОГУТ использовать 32-битные COM-серверы, реализованные в DLL. Так же, как 32-битные могут использовать 16-битные. Просто DLL загружается в суррогатный процесс (dllhost.exe) и далее взаимодействие происходит как с сервером в виде EXE. А тут проблем уже нет.

    У меня нет сейчас под рукой 64-битной системы, чтобы тестировать, но можно попробовать рецепт, что я нашел в Сети:
    * Идем в HKEY_CLASSES_ROOT, находим там AppID и в этой ветке создает раздел с именем "{84A3E023-8F84-4a8a-8CD9-22425B5DA137}".
    * Для этого раздела создаем строковое свойство "DllSurrogate" с пустым значением.
    * Находим HKEY_CLASSES_ROOT\CLSID\{84A3E023-8F84-4a8a-8CD9-22425B5DA137} и удаляем подраздел "InprocServer32".

    К сожалению, сам проверить не могу. К тому же, на 64-битной системе теоретически могут быть дополнительные заморочки с реестром. Тут нужно копать.

    Отправлено 14 года(лет) назад #
  6. Хотя нет, этот пример работать не должен.

    Отправлено 14 года(лет) назад #
  7. Мдя, и насчет 16-бит я тоже гоню.

    Отправлено 14 года(лет) назад #
  8. По идее, рабочим должно быть такое:
    * Идем в HKEY_CLASSES_ROOT, находим там AppID и в этой ветке создаем раздел с именем "{84A3E023-8F84-4a8a-8CD9-22425B5DA137}".
    * Для этого раздела создаем строковое свойство "DllSurrogate" с пустым значением.
    * Находим HKEY_CLASSES_ROOT\CLSID\{84A3E023-8F84-4a8a-8CD9-22425B5DA137} и добавляем строковое свойство "AppID" со значением "{84A3E023-8F84-4a8a-8CD9-22425B5DA137}".

    Но что-то у себя запусков суррогатов я не наблюдаю...

    Отправлено 14 года(лет) назад #
  9. Кстати, вот еще потенциальный способ запустить Йоксель в суррогатном процессе.
    * Идем в "Панель управления" - "Администрирование" - "Службы компонентов".
    * Для своего компьютера создаем новое приложение COM+ - "Йоксель".
    * У нового приложения в разделе "Компоненты" выбираем "Создать компонент".
    * Выбираем "Установка новых компонентов".
    * Указываем путь к Yoksel.dll.
    * Регистрируем.
    * Далее щелкаем правой кнопкой по новосозданному приложению и в меню выбираем "Запустить". Наблюдаем в процессах новый процесс dllhost.exe - это запущенный Йоксель.

    При подобном использовании Йокселя есть нюанс. Все объекты Йокселя должны быть порождены одним объектом типа "Йоксель". Например, если мы используем объект "ГрафическийКонвертер", то мы должны указать ему документ методом "УстановитьДокумент". Так вот и сам "ГрафическийКонвертер", и "ТабличныйДокумент" должны быть созданы при помощи обращений к одному и тому же объекту "Йоксель". При старом методе можно было создавать эти объекты через разные объекты "Йоксель". Под это заточена тестовая конфа. Поэтому тесты в ней работать не будут.

    Ну и еще проблема - не работает метод GetControl Active-X объекта. Как работать с Active-X - пока не понятно. Просто же конвертере должны, по идее, работать нормально.

    Отправлено 14 года(лет) назад #
  10. Полезная тема на RSDN об использовании 32-битного сервера из 64-битного процесса. Заодно некоторые интересные подробности как нужно регистрировать.
    http://www.rsdn.ru/forum/com/3063583.flat.aspx

    Отправлено 14 года(лет) назад #
  11. Спасибо за наводку. В результате для того что бы заработало нужно проделать
    следующее:
    1. создаем раздел с именем "{84A3E023-8F84-4a8a-8CD9-22425B5DA137}" в ветке HKEY_CLASSES_ROOT\wow6432node\appid. Для этого раздела создаем строковое свойство "DllSurrogate" с пустым значением.
    2. Находим HKEY_CLASSES_ROOT\wow6432node\CLSID\{84A3E023-8F84-4a8a-8CD9-22425B5DA137} и добавляем строковое свойство "AppID" со значением "{84A3E023-8F84-4a8a-8CD9-22425B5DA137}".

    Отправлено 14 года(лет) назад #
  12. Чё, правда, работает?! Охренеть! :D Спасибо!

    Отправлено 14 года(лет) назад #
  13. В 64-битных системах для 64-х битной среды используется каталог System32
    А для 32-битной среды - SysWoW64

    Соответственно для регистрации yoksel.dll нужно использовать %systemroot%\SysWoW64\regsvr32.exe

    И это не опечатка. Это Micro$oft.

    http://support.microsoft.com/kb/249873/ru

    Отправлено 9 года(лет) назад #
  14. Денис
    Участник

    Добрый день.
    Столкнулся с такой же проблемой: не работает код "Новый СОМОбъект("Йоксель")" на сервере x64.

    Как выглядит полная инструкция по настройке?

    1. Регистрация yoksel.dll. Какой командой: %systemroot%\SysWoW64\regsvr32.exe или %systemroot%\system32\regsvr32.exe?

    2. Правка реестра?
    2.1. Создаем раздел с именем "{84A3E023-8F84-4a8a-8CD9-22425B5DA137}" в ветке HKEY_CLASSES_ROOT\wow6432node\appid. Для этого раздела создаем строковое свойство "DllSurrogate" с пустым значением.
    2.2. Находим HKEY_CLASSES_ROOT\wow6432node\CLSID\{84A3E023-8F84-4a8a-8CD9-22425B5DA137} и добавляем строковое свойство "AppID" со значением "{84A3E023-8F84-4a8a-8CD9-22425B5DA137}".

    3. Создание COM+ компоненты из Yoksel.dll? Когда я создаю новую компоненту из Yoksel.dll, появляется много компонент с пустым наименованием (картинка в приложении). Это так и должно быть?

    Отправлено 9 года(лет) назад #

RSS экспорт этой темы

Отправить сообщение

Вы должны войти в систему, чтобы оставлять сообщения.