Пакет Nuget «GDAL» — невозможно загрузить DLL «gdal_wrap» в надстройке.C#

Место общения программистов C#
Ответить
Anonymous
 Пакет Nuget «GDAL» — невозможно загрузить DLL «gdal_wrap» в надстройке.

Сообщение Anonymous »

У меня есть «консольное» приложение, в котором я установил пакет Nuget «GDAL» (а также GDAL.Native).
Помимо файла exe это приложение также генерирует dll, которую можно загрузить в качестве надстройки в стороннем программном обеспечении (Autocad).
  • Случай 1: если я запускаю файл exe, мое приложение работает и GDAL функции также работают (это отличает мой вопрос от этого в том смысле, что обычное консольное приложение работает хорошо, GDAL выполняет свою работу, проблема именно в том, что оно работает как надстройка)
  • Случай 2: если я загружаю файл dll в качестве надстройки в стороннем программном обеспечении, надстройка работает, но когда приходит время вызвать одну из функций GDAL (пример: Gdal.Open(filePath, Access.GA_ReadOnly)), я получаю следующее исключение:
Exception:
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»