Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: begiz от 23-09-2015, 21:04:25

Название: последовательность загрузки модулей в 2015
Отправлено: begiz от 23-09-2015, 21:04:25
Добрый день,
столкнулся с такой проблемой.
Загружаю dll (Objectarx в moxed-mode) через реестр, говорит какие-то библиотеки не найдены. (LOADCTRLS=2, MANAGED=1)
Загружаю тот же dll через netload, загрузается.

Тот же код загружается в версиях 2010-2014 без проблем.
Куда копать?

П.С. нашел такую статью
https://forums.autodesk.com/t5/autocad-2013-2014-2015-2016/acwipeout-arx/td-p/5362389 (https://forums.autodesk.com/t5/autocad-2013-2014-2015-2016/acwipeout-arx/td-p/5362389)

Wipeout напрямую нигде не использую, но при загрузке устанавливаю переменную WIPEOUTFRAME, не знаю связано ли.
Название: Re: последовательность загрузки модулей в 2015
Отправлено: Александр Ривилис от 23-09-2015, 21:06:54
говорит какие-то библиотеки не найдены.
Какие? Думаю что нужно от этого отталкиваться, и если они нужны, то их нужно самостоятельно загрузить.
Название: Re: последовательность загрузки модулей в 2015
Отправлено: Александр Ривилис от 23-09-2015, 21:22:19
Wipeout напрямую нигде не использую, но при загрузке устанавливаю переменную WIPEOUTFRAME, не знаю связано ли.
Вполне может быть связано. Соответственно в On_kInitAppMsg помести:
Код - C++ [Выбрать]
  1. acrxLoadModule(L"acismobj20.dbx",false,false);
  2. acrxLoadModule(L"acismui.arx",false,false);
до установки WIPEOUTFRAME.
Название: Re: последовательность загрузки модулей в 2015
Отправлено: begiz от 23-09-2015, 21:52:25
Да в том то и дело что непонятно каких не хватает.
х_2015.dll cannot find a dll or other file that it needs.

А так как потом загружается, значит все в наличии, просто не подгружается вовремя.

acrxLoadModule(L"acismobj20.dbx",false,false);
acrxLoadModule(L"acismui.arx",false,false);

не помогло, вписал сразу после
AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;

Стоит добавить, что dll лежит не в папке Autocad
Название: Re: последовательность загрузки модулей в 2015
Отправлено: Александр Ривилис от 23-09-2015, 22:11:22
Выложи свой dll-файл. Гляну. В принципе нужно смотреть таблицу внешних ссылок.
Название: Re: последовательность загрузки модулей в 2015
Отправлено: begiz от 23-09-2015, 22:16:54
Прицепил,
там еще 2 dll, которые нужны для работы
Название: Re: последовательность загрузки модулей в 2015
Отправлено: Александр Ривилис от 23-09-2015, 23:00:26
Разархивировал в каталог C:\AAA
Занёс в реестр:
Код - Microsoft Registry [Выбрать]
  1. REGEDIT4
  2.  
  3. [HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R20.0\ACAD-E001:409\Applications\ARM_2015]
  4. "DESCRIPTION"="ARM_2015"
  5. "LOADCTRLS"=dword:00000002
  6. "LOADER"="C:\\AAA\\ARM_2015.dll"
  7. "MANAGED"=dword:00000001

Добавил C:\AAA в пути доступа AutoCAD и в доверенные:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F4614%2F7842324.4%2F0_108705_f2a4811f_orig.png&hash=e388f0fc52859b02f1aab298d77b3c9f)

Получил результат:



Таблице экспорта:
Цитировать
Ac1st20.dll
accore.dll
acdb20.dll
AcGe20.dll
acui20.dll
adui20.dll
ADVAPI32.dll
COMCTL32.dll
GDI32.dll
KERNEL32.dll
mfc110u.dll
mscoree.dll
MSVCP110.dll
MSVCR110.dll
mysqlcppconn.dll
ole32.dll
OLEAUT32.dll
RPCRT4.dll
SHLWAPI.dll
USER32.dll
ACAD.exe

Нестандартная только одна mysqlcppconn.dll. Она должна быть или в путях доступа, или объявлена как DELAYLOAD (https://msdn.microsoft.com/en-us/library/yx9zd12s.aspx) и загружена в On_kInitAppMsg
Название: Re: последовательность загрузки модулей в 2015
Отправлено: begiz от 23-09-2015, 23:13:06
Спасибо!!
Добавил в суппорт патх и у меня загрузилось всё....
Но все равно не понял, почему раньше работало без доп. добавления в суппорт
Название: Re: последовательность загрузки модулей в 2015
Отправлено: Александр Ривилис от 23-09-2015, 23:46:56
Но все равно не понял, почему раньше работало без доп. добавления в суппорт
Меня больше удивляет то, что оно работало в предыдущих версиях, чем то, что оно сейчас у тебя не стало работать.