2016-09-26 72 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所需的依賴關係。

相關問題