Windows phone 8 WP8-通过Windows运行时组件重新使用本机DLL

Windows phone 8 WP8-通过Windows运行时组件重新使用本机DLL,windows-phone-8,Windows Phone 8,我有一个本机dll,我想在我正在进行的WP8项目中使用它。我已经做了一些研究,并创建了一个C++ Windows运行时组件WRC来封装本地DLL。WRC项目使用一个.lib文件,我的WP8应用程序调用WRC项目 我的解决方案编译得很好,但是当我的应用程序调用本机DLL中的方法时,我得到一个错误消息,指定的模块找不到。来自HRESULT的异常:0x8007007E异常 从周围的阅读来看,似乎没有加载dll。我已将所有相关DLL复制到.exe文件所在的输出目录中,并且在不同的位置也复制了这些DLL,

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

我的解决方案编译得很好,但是当我的应用程序调用本机DLL中的方法时,我得到一个错误消息,指定的模块找不到。来自HRESULT的异常:0x8007007E异常

从周围的阅读来看,似乎没有加载dll。我已将所有相关DLL复制到.exe文件所在的输出目录中,并且在不同的位置也复制了这些DLL,但错误不断出现


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

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

当MSBuild无法自行确定依赖项时,关于如何确保文件包含在电话包中的指导非常少。它当然不会用于DLL,构建系统无法判断它是否不是解决方案中的项目。在这种情况下,您的操作似乎有点像是处于出血边缘:


但是当我尝试它时,它工作得很好,通过MSBuild输出,而不是通过实际测试:Project+addexistingitem。导航到DLL并选择它。在“解决方案资源管理器”窗口中选择它,然后在“属性”窗口中查看。确保Build Action=Content,Copy to Output Directory=Copy(如果更新)。重建,您现在将看到文件被添加到XAP。这应该可以解决这个特殊的错误。可能还有其他问题:

Windows桌面或Windows应用商店本机DLL与Windows Phone不兼容,即使它们是为相同的CPU体系结构构建的

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

关于Windows运行时组件:


在Windows Phone上,Windows运行时组件本身是本机DLL。手机不支持.NET。Windows运行时组件的二进制文件无法在Windows应用商店应用程序和Windows Phone应用程序之间共享。

谢谢Hans,但我仍然收到相同的错误。我使用的是VS的快速版本,所以我的选项略有不同。对于DLL,我在属性窗格中设置了以下值:Content=True,File Type=Document,includedinproject=True。在“属性”窗口中,右键单击dll,然后单击“属性”,将以下值从Build=No、Content=Yes、Item Type=Managed resource compiler中排除。这些值正确吗?另外,我实际上是为Windows 8开发的,稍后我会将其移植到WP8。嗨,Paul,Windows运行时组件是一种项目类型,允许您包装本机DLL,以便WP可以使用它。当我尝试将WRC从Windows 8移植到WP8时,可能会遇到一些问题;但现在我正试图找出我最初的问题。在这个文档的底部,有一个表指定创建和使用WRC。这意味着WP8可以使用Windows8WRC。这只是说你可以在WindowsPhone和WindowsStore中分别编写WRC,而不是说你可以在两者之间共享二进制文件。当然,您可以共享绝大多数源代码。它可能不会明确表示您可以共享,但Windows 8是唯一一个可以编写C WRC但可以在WP8中使用的源代码。无论如何,这不是我目前坚持的…你不能在WP8上使用c WRC。嗨,你解决问题了吗?我也有同样的问题,我正在尝试加载库的方法。。。