Имя: Пароль:
1C
 
8.3.14 (Не обнаружена библиотека core_rl_magick_.dll)
0 elCust
 
25.02.19
11:09
Привет всем.

Тестируем 8.3.14.1565. Нормально работает до момента задействования COM-соединения.

При COM-соединении вываливается алерт операционки "Запуск программы невозможен, так как на компьютере отсутствует CORE_RL_magic_.dll".
При этом соединение устанавливается и дальше работает нормально.
В каталоге bin есть этот dll, но он не регистрируется. В общем ХЗ.

Что делать? Кто сталкивался на 8.3.14?
1 ДенисЧ
 
25.02.19
11:18
А что разработчик данной библиотеки говорит?
2 Владимир Милькин
 
25.02.19
11:23
(0) Перед установкой COM-соединения попробуйте сделать текущей папку bin с нужной платформой 1с (там где и лежат нужные dll). Я именно так (правда подключаюсь не из 1с, а из c#) выкрутился в обновляторе.
3 ДенисЧ
 
25.02.19
11:25
(2) Какая текущая папка для ком-соединения?
4 Владимир Милькин
 
25.02.19
11:26
(3) Текущая папка для процесса, который инициирует соединение.
5 ДенисЧ
 
25.02.19
11:28
(4) Ком работает в своём пространстве. Никак не связанном с родителем.
6 Владимир Милькин
 
25.02.19
11:32
(5) В том то и дело, что в данном случае при инициализации COM используется рабочая папка родителя (процесса инициировавшего соединение) и она отличается от папки bin, в которой лежат все эти новые библиотеки и поэтому платформа их не находит.

В моём случае проблема полностью решилась, когда я перед установкой соединения начал использовать в качестве рабочей папки папку платформы, но у меня дело было в .net.
7 Владимир Милькин
 
25.02.19
11:45
Глянул сейчас ещё раз код - я же там специальным образом загружаю COM-библиотеку прямо в адресное пространство обновлятора, поэтому мне и помог описанный мною приём. Можно ли то же самое сделать из 1с - не уверен. Но дело здесь именно в том, что в момент загрузки COM (он ведь может загружаться по разному в зависимости от настройки) папка BIN не является текущей (рабочей) для процесса. Раньше это было не критично, а вот эти новые dll в платформе грузятся как-то по особому, ориентируясь на текущую папку. Надеюсь это как-то поможет найти решение.
8 ДенисЧ
 
25.02.19
11:46
(6) У тебя ком какой-то странный
9 Владимир Милькин
 
25.02.19
11:51
Я, конечно, ни разу не эксперт по COM, но давайте даже ориентироваться на вот эту статью: http://catalog.mista.ru/public/387577/

Раздел "Подключение внешнего соединения":
Внутрипроцессное (inproc)
COM-объект создается в памяти COM-клиента

Я так понимаю, что в (0) речь идёт именно по внутрипроцессном соединении, а значит COM-библиотека также (как и у меня) грузится в адресное пространство клиента, а значит установка текущей (рабочей) папки для процесса клиента может иметь значение для поиска указанных библиотек.
10 dmpl
 
25.02.19
12:15
А что, добавление папки в PATH не помогает?
11 elCust
 
25.02.19
13:08
(10) +1. Работает.
12 elCust
 
25.02.19
13:10
(10) Теперь, что каждый раз для новой платформы прописывать PATH?
13 elCust
 
25.02.19
13:10
(12) Все понял. Это связано с тем, что по COM мы ходим из 8.2, а там переменные среды другие.