2017-06-16 127 views
-1

我有一個wpf應用程序,它使用用C++ cli創建的DLL。通過c + + cli文件訪問UWP DLL

DLL從安裝文件夾中讀取文件。它在啓動時無需使用文件選擇器即可完成此操作。

其實DLL使用openCV,我調用opencv函數來加載文件。

我做..

std::string pathUnmanged = msclr::interop::marshal_as<std::string>(file) 

然後傳遞pathUnmanaged到加載該文件OpenCV的功能。

這裏'路徑'只是文件名和擴展名。

這適用於我在發佈版本。但是,如果我轉換到Windows應用程序UWP使用桌面橋接,然後該文件不加載。

有人能指出我正確的方向嗎?

回答

0

在WPF發佈模式下,當你點擊你的exe來啓動你的應用程序時,當前目錄被設置爲與exe文件相同的文件夾,所以程序可以使用「filename.ext」來定位文件。

然而,將此軟件包打包到應用商店後,當前目錄可能在其他地方

您可以將此行添加到WPF程序的Main方法以檢查當前目錄的位置。

MessageBox.Show(Environment.CurrentDirectory); 

如果是這樣,請使用該文件的完整路徑。可以用這種方式檢索完整路徑

var fullFileName = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), 
      "filename.ext"); 

我用C#編寫它,但可以很容易地將它轉換爲C++/CLI。

+0

謝謝。這是當場....但是,有錯字...你的意思是System.Reflection.Assembly.GetExecutingAssembly()。位置....你可以編輯你的答案,我會接受它? – user3079907

+0

是的,你說得對,應該是位置。 – kennyzx