UWP应用中的Sehexception-尝试为SDK加载DLL



我正在尝试在UWP桌面应用中使用SDK,但是我被一个例外所阻止了,我不知道什么是含义或如何修复它:Interopservices.sehexception

我已经为SDK获得了C#包装器的源代码,我成功地将其构建为UWP类库(它已经在Nuget上可用,但我认为也许我需要为UWP专门为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位于项目的根源中,并作为内容构建,并复制到构建的调试目录。

是否有可解决的方法,或者这是UWP的沙盒,使得无法使用外部DLL?

在UWP中不支持从外部组件中动态加载和执行代码。

您需要加载的所有库都必须在Appx本身中。

我将为您提供有关此主题的更多信息的链接。

在类似问题上链接到MSDN

最新更新