如何从Metro调用/调用本机dll?

时间:2011-10-18 12:41:17

标签: .net pinvoke native windows-8 windows-runtime

我有一个由两部分组成的库 - 一个.net程序集P/Invokes到本地第三方dll。在桌面模式下,这很好用:但是,当从Metro风格的应用程序引用程序集并运行它时,它会在P/Invoke上抛出System.DllNotFoundException抱怨“无法加载DLL'库':找不到指定的模块。“

本机dll不做任何特殊操作,但只创建到服务器的外出TCP / IP连接。系统无法知道这一点,而是原生dll可以做任何事情。这就是我怀疑可能无法做到这一点的原因。

关于Metro风格的应用程序msdn提到了一些dll搜索顺序,暗示可以加载本机dll吗?

另外我发现这个link on msdn谈论加载“库”并提到清单文件中的PackageDependency,但对我来说仍然不清楚如何以一种方式向包中添加本机dll可以P/Invoke

2 个答案:

答案 0 :(得分:0)

将其添加到项目中(右键单击项目,添加,现有项目。)检查该项目的属性中,Content设置为True(默认情况下为false)。构建。

答案 1 :(得分:0)

这可能是设计上的。您的问题可能是由LoadLibrary返回错误代码126的错误引起的。 如果您的应用程序以桌面模式运行,则应针对您的应用程序定位桌面模式您也可以使用早期版本的Windows。