我正在尝试在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