UWP应用程序中的SEHException - 尝试加载SDK的DLL

问题描述 投票:1回答:1

我正在尝试在UWP桌面应用程序中使用SDK,但我被一个异常停止,我不知道它是什么意思或如何解决它:InteropServices.SEHException

我已经获得了SDK的C# wrapper的源代码,我已成功构建为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?

c# dll uwp sdk
1个回答
1
投票

UWP不支持从外部程序集动态加载和执行代码。

您需要加载的所有库必须位于appx本身。

我将为您提供一个链接,以便进一步了解该主题。

link to msdn on similar question

© www.soinside.com 2019 - 2024. All rights reserved.