我在进行Windows开发方面经验很少,遇到了一些问题。我有一个用C ++编写的私有第三方库。我无权访问源代码,此库有许多第三方依赖项。问题是我想通过PInvoke从CSharp UWP应用程序中使用此应用程序,但到目前为止我遇到了麻烦。我收到DLLNotFoundException,如果无法加载库或无法加载任何依赖项,我知道这可能会导致。
到目前为止我尝试了什么: 为了缩小问题范围,我尝试使用常规C#控制台应用程序(Windows窗体也有效)。从这个启动项目中,我可以按预期调用库中的函数。
使用CSharp UWP测试应用程序: 我已经编译了一个简单的c ++测试库,它将两个数字加在一起并使用它来确保我至少正确包含主DLL。这对我来说很好。我还读到,在UWP应用程序中,DLL必须直接添加到项目中并标记为内容,因此它们包含在UWP包中。我已经这样做了,并确认非UWP控制台应用程序使用相同的DLL。
所以我的问题是,如何使用相同的配置,Windows控制台/表单应用程序可以使用库 - 但UWP应用程序不能。这是因为非UWP应用程序可以访问比UWP应用程序可以或更多的系统DLL吗?如果你至少可以帮助我缩小可能出现的问题,那就太棒了。如果有办法找出UWP应用程序无法加载的库(' s),那将会很棒 - 即使非UWP应用程序可以加载一切正常。
我正在使用的UWP应用程序尚未部署到远程设备(尚未)。我在本地调试应用程序时遇到了问题。注意 - 我无法共享我正在使用的库 - 因此发布测试应用程序是不可能的:(。
感谢您的帮助
答案 0 :(得分:0)
哦,我找到了这个具体问题的答案。问题是我还必须复制通过环境变量路径链接的DLL。我忘记了一些OpenCV DLL。
也是用于跟踪此功能的有用工具: 在我的情况下,我使用Windows库中的库,所以我可以使用" listdll"允许您列出在运行时由特定进程加载的DLL的工具。然后我在应用程序的UWP版本上运行了这个,在断点被击中之后,然后可以大致了解哪些DLL有点没有加载。我和#34; pestudio"这允许您查看.exe或DLL所需的依赖项。