ADN Club > ObjectARX
.ARX в качестве загрузки сторонних DLL
Dziubyna:
Здравствуйте, Александр Ривилис, хотел спросить на счет загрузки dll написанных на С#.
У меня есть arx с которого я подгружаю свои dbx и dll написанных на С++, также у меня есть написанный CSharp Plugin для AutoCAD. Если его просто подгружать через "netload" то все нормально, при загрузке модуля входит в точку "void IExtensionApplication.Initialize()".
Можно ли сделать такую загрузку с кода С++ (чтобы проходило метод "void IExtensionApplication.Initialize()")? или нужно вызывать код AutoLISP? пробовал LoadLibrary, acrxLoadApp... не получается.
За ранее благодарен за ответ.
Александр Ривилис:
Это возможно и достаточно просто. И об этом уже написано у нас на сайте:
Как загрузить из неуправляемого arx-приложения управляемую .NET сборку в AutoCAD?
Загрузка управляемой .NET сборки из ObjectARX приложения
Александр Ривилис:
Добавил проект для AutoCAD 2014.
Есть несколько нюансов:
1. Несколько разное определение функции LoadManagedDll для x64 и x86:
--- Код - C++ [Выбрать] ---#ifdef _WIN64enum Acad::ErrorStatus __cdecl LoadManagedDll(ACHAR const *);#elseenum Acad::ErrorStatus __stdcall LoadManagedDll(ACHAR const *);#endif2. Чтобы не забывать подключать библиотеку acdbmgd.lib удобно использовать #pragma:
--- Код - C++ [Выбрать] ---#pragma comment(lib,"acdbmgd.lib")3. В AutoCAD 2014 встроена защита от загрузки приложений. Немного об этом здесь: http://adn-cis.org/autocad-2014-dlya-razrabotchikov.html
Функция LoadManagedDll следует этой защите, т.е. в зависимости от того где находится .NET-сборка и какое значение системной переменной SECURELOAD сборка может быть:
a) загружена без предупреждений (если или SECURELOAD = 0, или сборка находится в одном из каталогов, указанных в TRUSTEDPATHS)
b) появится запрос разрешения загрузки (если SECURELOAD = 1, и сборка не находится в одном из каталогов, указанных в TRUSTEDPATHS)
c) сборка не будет загружена (если SECURELOAD = 2, и сборка не находится в одном из каталогов, указанных в TRUSTEDPATHS)
Навигация
Перейти к полной версии