【问题标题】:Can't load a native DLL无法加载本机 DLL
【发布时间】:2012-11-06 15:01:13
【问题描述】:

这是this的后续报道。

Windows Phone 8 C# 项目 (MyApp),从 WP7.1 迁移而来。我已将本机 Windows 运行时组件库 (AppLib) 添加到解决方案中,并创建了一个参考。其中有一个公共密封的参考类(MyClass)。在 C# 代码中有对它的引用(在 XAML 主页面的 OnLoaded 中)。整个构建 - 意味着正在生成组件的元数据。

当我尝试在模拟器上运行时,项目失败并出现异常或键入 BadImageFormatException 并显示以下消息:

试图加载格式不正确的程序。 (HRESULT 异常:0x8007000B)

当您尝试在 .NET 中混合 CPU 类型时,通常会弹出该错误。

活动平台是“混合平台”。在配置管理器中,它被配置为为“x86”构建MyApp,为“Win32”构建AppLib。在一个运行良好的新生成的香草项目中,配置是相同的。

问题 - 该配置有什么问题?我需要检查什么?

编辑:我在解决方案中添加了第二个空白 C++ 库 - TestLib。这个加载并按预期工作。

EDIT2:从 AppLib 中的构建中排除了所有内容 - 它可以工作。现在我将逐行添加,看看是哪一行导致了问题...

【问题讨论】:

  • 这是一个 Windows Phone WinRT 组件吗?
  • 库的项目类型是“Windows Phone Runtime Component”。 General 下的属性表显示“Windows Phone 8.0 (v110)”。

标签: windows-runtime windows-phone-8


【解决方案1】:

完全是我的错。当我更改 AppLib 的命名空间时(请参阅链接的问题),我在库中的 MyApp 命名空间中留下了一个小声明。

该错误仍然具有误导性。我会删除这个问题,但由于错误消息肯定会让某人对构建 CPU 类型和诸如此类的东西进行疯狂追逐,所以让它保留。

【讨论】:

    【解决方案2】:

    在大多数情况下不应该为 ARM 构建 Windows Phone 库吗?您有机会观看上周//Build/ 会议的“Windows Phone 8: Using C++ in your Applications”会议吗?这可能包括一些答案。

    【讨论】:

    • WP8 模拟器是 x86,而不是 ARM。还有另一种可用的 C#/C++ 解决方案,具有相同的配置(Win32 和 x86)。
    • 也许本机 dll 引用了不同格式的库?
    • 我没有添加对库的任何引用,除了项目创建时的引用。我确实添加了一堆来源。但除了普通的 RTL 之外,它们什么都没有。
    猜你喜欢
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多