SEHException в приложении UWP - попытка загрузить DLL для SDK - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь использовать SDK в настольном приложении UWP, но меня останавливает исключение, я не совсем понимаю, что означает или как это исправить: InteropServices.SEHException

Я получил исходный код для C # оболочки для SDK, который я успешно создал как библиотеку классов UWP (она уже была доступна в nuget, но яВозможно, мне нужно было построить его специально для UWP - это уже не так).

Судя по отладочной информации, DLL загружена, а указатели для делегатов куда-то указывают, но исключение составляетброшенный в эту часть кода оболочки:

int controllerCount = EnumerateGpuController(IntPtr.Zero, 0);

Эта функция определяется как:

internal int EnumerateGpuController(IntPtr handles, int size) => 
enumerateGpuControllerPointer(handles, size);

Указатель получается из этого:

enumerateGpuControllerPointer = (EnumerateGpuControllerPointer)
Marshal.GetDelegateForFunctionPointer(NativeMethods.GetProcAddress(dllHandle, "EnumerateGPU"), typeof(EnumerateGpuControllerPointer));

dllHandle кажется действительным после подтверждения того, что он загружен.DLL находится в корне проекта и собирается как контент и копируется в каталог Debug при сборке.

Есть ли решаемый способ обойти это, или это песочница UWP, делающая невозможным использование внешних DLL?

1 Ответ

0 голосов
/ 03 марта 2019

Динамическая загрузка и выполнение кода из внешней сборки не поддерживается в UWP.

Все библиотеки, которые вам нужно загрузить, должны находиться в самом appx.

Я предоставлю вамссылка, чтобы читать дальше больше по этой теме.

ссылка на MSDN по аналогичному вопросу

...