c# - UWP 应用程序中的 SEHException - 尝试为 SDK 加载 DLL
问题描述
我正在尝试在 UWP 桌面应用程序中使用SDK,但我被一个我不知道是什么意思或如何修复它的异常阻止:InteropServices.SEHException
我已经获得了 SDK 的C# 包装器的源代码,我已经成功地将其构建为 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?
解决方案
推荐阅读
- python - Python - 数组中序列匹配的不同方法?
- python - Python:跨数据帧的迭代
- android - 初始化 LocationCallback 后打开设备 GPS 时,未调用 LocationCallback onLocationResult
- java - 压缩选定的图像文件/从相机拍摄
- python - Python:读取和获取文本文件的某些部分
- csv - 谷歌联系人导入失败
- gcc - 用于 DOS 的 GCC 交叉编译器会为简单的“Hello world!”生成链接器错误。在 C 中
- php - Windows XAMPP 缺少 MySQL 扩展
- angular - 如何从 angular localhost:4200 调用 spring security azure AD localhost:8080。天蓝色调用中的错误
- vb.net - 是否可以在实例化时确定类的类型或在不强制转换的情况下转换类型?