【发布时间】:2019-03-03 15:17:10
【问题描述】:
我正在尝试在 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?
【问题讨论】: