【发布时间】:2011-12-10 01:52:29
【问题描述】:
我有一个由两部分组成的库 - 一个 .net 程序集,P/Invokes 到一个本地 3rd 方 dll。在桌面模式下,这工作得很好:但是,当从 Metro 风格应用程序引用程序集并运行它时,它会在 P/Invoke 上引发 System.DllNotFoundException 抱怨“无法加载 DLL 库”:指定的模块无法找到了。”
本机 dll 没有做任何特殊的事情,只是创建到服务器的传出 TCP/IP 连接。系统无法知道这一点,而是本机 dll 可以做任何事情。这就是为什么我怀疑它可能无法做到这一点。
msdn 上提到了一些关于 Metro 风格应用程序的 dll 搜索顺序,暗示可以加载本机 dll?
我还发现这个link on msdn 谈论加载“库”并在清单文件中提到 PackageDependency,但对我来说仍然不清楚 如何以可能的方式将本机 dll 添加到包中到P/Invoke它。
【问题讨论】:
-
您可以尝试将 DLL 中的 TCP/IP 内容注释掉并再次测试吗?这将区分未找到 DLL 和未找到其依赖项。另外,您是否勾选了要使用传出 Internet 连接的功能?
-
我没有构建 dll。它不是解决方案的一部分。所以我无法改变 dll 的构建方式。好点,它可能是导致错误的一些次要依赖!将尽快检查。
-
@vidstige 您现在可能已经解决了这个问题,否则请查看my answer 的相关问题。
-
@AndersGustafsson 我在两者之间换了工作,所以我无法尝试:-S。我很确定这是我尝试的第一件事。
标签: .net pinvoke native windows-8 windows-runtime