2015-11-06 97 views
3

我試圖將項目編譯爲UWP應用程序,以在安裝了Windows 10 IoT的Raspberry Pi 2上進行部署。在Raspberry Pi上的Windows 10物聯網UWP應用程序中使用ARM編譯的DLL 2

該項目使用一個開放源代碼框架,附帶一個包裝和一個DLL。

我已經將DLL重新編譯爲ARM,並將C#包裝器放入我的項目中。

我已經使用到MainPage.xaml.cs中並使用了包裝器/ DLL中的函數。

我使用FTP將編譯後的DLL文件複製到RPi2上的C:\ Users \ Public中,並使用ICACLS將DLL設置爲可供所有人訪問。

當我運行通過遠程調試我的應用程序得到:

其他信息:無法加載DLL 'C:\用戶\公用\ snap7.dll':訪問被拒絕。 (異常來自HRESULT :0X80070005(E_ACCESSDENIED))

就是我想用DLL文件做在Windows物聯網可能嗎?

+0

請記住,C#包裝必須編譯爲AnyCPU。 – osexpert

+0

您是否使用VS2015 Visual C++「空白Windows IoT Core控制檯應用程序」模板並將配置類型更改爲動態鏈接庫(.dll)? – osexpert

+0

我遇到了完全相同的問題。我的溶劑是將dll添加到溶劑探測器。設置屬性的DLL:「複製到輸出目錄」,「複製如果更新」然後當我打電話的DLL,我沒有得到訪問被拒絕的錯誤。你必須找到部署目錄。我在「C:\ Data \ Users \ DefaultAccount \ AppData \ Local \ DevelopmentFiles \」 –

回答

1

我想你會以錯誤的方式去做。您不應該需要執行以下步驟:

我使用FTP將RPi2上編譯的DLL文件複製到C:\ Users \ Public,並使用ICACLS將DLL設置爲可供所有人訪問。

只需將DLL添加到您的項目中,就像您所做的一樣,並將其設置爲「Copy Local = true」就足夠了。部署時,DLL會自動複製到bin文件夾中。

+0

當我嘗試將編譯的DLL添加到項目我得到「..不能添加,請確保文件可以訪問,這是一個有效的程序集或COM組件。」我將其添加爲參考,這是正確的方法嗎? – Nick

+0

此外,DLL是用C++編寫的,因此不能直接作爲參考添加到C#或VB項目中。有沒有辦法解決。 – Nick

+0

您可以找到一種方法在UWP應用程序中導入非託管C++ dll,或者在C++庫中創建託管包裝程序,以便您可以在VS中添加引用。無論哪種方式,它需要一個新的問題 – vidalsasoon

1

通常,本機DLL不能與UWP應用程序一起使用。還請仔細查看未使用IoT-Core實施的API。 有這方面的工具。

相關問題