Помимо файла exe это приложение также генерирует dll, которую можно загрузить в качестве надстройки в стороннем программном обеспечении (Autocad).
- Случай 1: если я запускаю файл exe, мое приложение работает и GDAL функции также работают (это отличает мой вопрос от этого в том смысле, что обычное консольное приложение работает хорошо, GDAL выполняет свою работу, проблема именно в том, что оно работает как надстройка)
- Случай 2: если я загружаю файл dll в качестве надстройки в стороннем программном обеспечении, надстройка работает, но когда приходит время вызвать одну из функций GDAL (пример: Gdal.Open(filePath, Access.GA_ReadOnly)), я получаю следующее исключение:
System.TypeInitializationException: инициализатор типа для 'OSGeo.GDAL.GdalPINVOKE' выдал исключение.
---> System.TypeInitializationException: инициализатор типа для 'SWIGExceptionHelper' выдал исключение. исключение.
---> System.DllNotFoundException: Невозможно загрузить DLL «gdal_wrap» или одну из ее зависимостей: невозможно найти конкретный модуль. (0x8007007E)
at OSGeo.GDAL.GdalPINVOKE.SWIGExceptionHelper.SWIGRegisterExceptionCallbacks_Gdal(ExceptionDelegate applicationDelegate, ExceptionDelegate arithmeticDelegate, ExceptionDelegate разделитьByZeroDelegate, ExceptionDelegate indexOutOfRangeDelegate, ExceptionDelegate validCastDelegate, ExceptionDelegate validOperationDelegate, ExceptionDelegate ioDelegate, ExceptionDelegate nullReferenceDelegate, ExceptionDelegate outOfMemoryDelegate, ExceptionDelegate overflowDelegate, ExceptionDelegate systemExceptionDelegate)
at OSGeo.GDAL.GdalPINVOKE.SWIGExceptionHelper..cctor()
--- Конец внутренней трассировки стека исключений ---
в OSGeo.GDAL.GdalPINVOKE.SWIGExceptionHelper..ctor()
в OSGeo.GDAL.GdalPINVOKE..cctor()
--- Конец внутренней трассировки стека исключений ---
at OSGeo.GDAL.GdalPINVOKE.Open(Byte[] jarg1, Int32 jarg2)
at OSGeo.GDAL.Gdal.Open(String utf8_path, Access eAccess)
at ... мой собственный код ...
Я подозреваю, что пакеты Nuget могут быть настроены с абсолютными путями. Есть ли способ заставить его использовать относительные пути? Gdal_wrap.dll существует и выводится.
Используется последний стабильный пакет Nuget GDAL v3.11.3, загруженный из Visual Studio 2022 (версия 17.14.17)
Подробнее здесь: https://stackoverflow.com/questions/798 ... n-an-addin
Мобильная версия