2

我有一个本机 dll,我想在我正在处理的 WP8 项目中使用它。我做了一些研究并创建了一个 C++ Windows 运行时组件 (WRC) 来包装本机 DLL。WRC 项目使用 .lib 文件,我的 WP8 应用程序调用 WRC 项目。

我的解决方案编译得很好,但是当我的应用程序调用本机 DLL 中的方法时,我得到一个The specified module could not be found. (Exception from HRESULT: 0x8007007E)异常。

从周围阅读看来,dll 似乎没有被加载。我已将所有相关的 dll 复制到 .exe 文件所在的输出目录以及不同的地方,但错误不断出现。

如果有人能指出我正确的方向,我将不胜感激。此外,如果需要更多信息,我也会发布。

4

2 回答 2

2

DLL 必须包含在您的 XAP 包中。当您构建应用程序时,您可以在“输出”窗口中看到正在处理的内容,它以“Begin Xap 打包”消息开始,然后列出所有添加的文件。运行时错误说它没有被包括在内。

当 MSBuild 无法自行确定依赖关系时,关于如何确保将文件包含在电话包中的指导非常少。它肯定不适用于您的 DLL,构建系统无法判断它是否不是您解决方案中的项目。在这种情况下,您似乎在前沿操作:)

但这在我尝试时效果很好,通过 MSBuild 输出而不是通过实际测试:Project + Add Existing Item。导航到您的 DLL 并选择它。在“解决方案资源管理器”窗口中选择它并查看“属性”窗口。确保“构建操作”= 内容,复制到输出目录=“如果更新则复制”。重建,您现在将看到文件被添加到 XAP。这应该解决这个特定的错误。可能还有其他人:)

于 2013-07-21T22:28:26.000 回答
-1

Windows 桌面或 Windows 应用商店原生 DLL 与 Windows Phone 二进制不兼容,即使它们是为相同的 CPU 架构构建的。

因此,您需要为 Windows Phone 工具集重新编译您的本地 DLL。

关于 Windows 运行时组件:

在 Windows Phone 上,Windows 运行时组件本身就是一个本地 DLL(手机不支持 .NET)。Windows 运行时组件的二进制文件不能在 Windows 应用商店应用和 Windows Phone 应用之间共享。

于 2013-07-22T09:44:54.917 回答