2016-09-26 55 views
0

我在Windows开发方面经验很少,并且遇到了一些问题。我有一个用C++编写的私人第三方库。我无法访问源代码,并且此库有许多第三方依赖关系。问题是我想通过PInvoke从CSharp UWP应用程序使用此应用程序,但目前我遇到了麻烦。我得到了DLLNotFoundException,如果库无法加载,或者它的任何依赖项无法加载,我知道可能会导致此问题。从.net UWP应用程序使用本机库时诊断DllNotFoundException

我到目前为止所尝试的: 为了缩小问题的范围,我尝试了从常规C#控制台应用程序(Windows窗体也可以)的工作。从这个启动项目,我可以按预期调用库上的函数。

使用CSharp UWP测试应用程序: 我编译了一个简单的C++测试库,它将两个数字加在一起,并用它来确保我至少正确地包括主DLL。这对我来说很好。我还读过UWP应用程序中的DLL必须直接添加到项目中并标记为内容,以便它们包含在UWP包中。我已经完成了此操作,并确认非UWP控制台应用程序与所以我的问题是,如何使用相同的配置,Windows控制台/表单应用程序可以使用库 - 但UWP应用程序不。这是因为非UWP应用程序可以访问更多的系统DLL比UWP应用程序可以或者什么东西?如果你至少能够帮助我缩小可能出现的问题的范围,那将是非常好的,如果有办法找出哪个库(UWP)是UWP应用程序无法加载 - 即使非UWP应用程序可以加载一切正常。

UWP应用程序我正在使用的是没有被部署到远程设备(还)。我在本地调试应用程序时遇到问题。请注意 - 我不能分享我使用的库 - 。所以发布一个测试应用程序出了问题:(的

感谢所有帮助

回答

0

哦,我找到了答案,这个具体问题的问题是,我还必须复制通过环境变量路径链接的DLL文件,我忘了一些OpenCV DLL。

另外有用的工具可以跟踪下来: 在我的情况下,我从Windows库,所以我可以使用“listdll”工具,它允许你列出在运行时被特定进程加载的DLL。然后我在应用程序的UWP版本上运行这个工具,在断点后然后可以大致了解哪些DLL没有加载。我将此与“pestudio”结合使用,以便您查看.exe或DLL所需的依赖关系。

相关问题