【问题标题】:SEHException in UWP app - attempting to load DLL for an SDKUWP 应用程序中的 SEHException - 尝试为 SDK 加载 DLL
【发布时间】: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?

【问题讨论】:

    标签: c# dll uwp sdk


    【解决方案1】:

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

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

    我将为您提供一个链接,以进一步阅读有关此主题的更多信息。

    link to msdn on similar question

    【讨论】:

    • 谢谢。我有一个后续问题,但我会在另一个线程中发布。
    猜你喜欢
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2022-06-23
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    相关资源
    最近更新 更多