在Raspberry Pi 2上的Windows 10 IoT UWP应用程序中使用ARM编译的DLL

在Raspberry Pi 2上的Windows 10 IoT UWP应用程序中使用ARM编译的DLL,uwp,raspberry-pi2,windows-10-iot-core,Uwp,Raspberry Pi2,Windows 10 Iot Core,我正试图将一个项目编译为UWP应用程序,以便在安装了Windows 10 IoT的Raspberry Pi 2上部署 该项目使用一个开源框架,该框架附带一个包装器和一个DLL 我已将DLL重新编译到ARM,并将C#包装器放入我的项目中 我已经将using添加到MainPage.xaml.cs中,并使用了包装器/DLL中的函数 我使用FTP和ICACLS将编译后的DLL文件复制到RPi2上的C:\Users\Public,并将DLL设置为可供所有人访问 当我通过远程调试器运行我的应用程序时,我得到

我正试图将一个项目编译为UWP应用程序,以便在安装了Windows 10 IoT的Raspberry Pi 2上部署

该项目使用一个开源框架,该框架附带一个包装器和一个DLL

我已将DLL重新编译到ARM,并将C#包装器放入我的项目中

我已经将using添加到MainPage.xaml.cs中,并使用了包装器/DLL中的函数

我使用FTP和ICACLS将编译后的DLL文件复制到RPi2上的C:\Users\Public,并将DLL设置为可供所有人访问

当我通过远程调试器运行我的应用程序时,我得到:

其他信息:无法加载DLL “C:\Users\Public\snap7.dll”:访问被拒绝。(不适用于 HRESULT:0x80070005(E_访问被拒绝))


我试图在Windows IoT上处理DLL文件的做法可能吗?

我认为你做得不对。您不需要执行以下步骤:

我使用FTP和ICACLS将编译后的DLL文件复制到RPi2上的C:\Users\Public,并将DLL设置为可供所有人访问


只需像以前那样将DLL添加到项目中并将其设置为“Copy Local=true”就足够了。部署时,DLL将自动复制到您的bin文件夹。

通常,本机DLL不能与UWP应用程序一起使用。 另外,请仔细查看未使用物联网核心实现的API。
有相关工具。

当我尝试将编译后的DLL添加到项目时,我得到“。无法添加。请确保该文件可访问,并且是有效的程序集或COM组件。”我将其添加为引用,这是正确的方法吗?另外,DLL是用C++编写的,所以不能直接添加到C或VB项目中作为参考。你可以找到一种方法来在UWP应用程序中导入非托管C++ DLL,或者在你的C++库周围创建一个托管包装,这样你就可以添加引用,不管是哪种方式,都需要一个新的问题包装器来加载DLL。问题是,当调试器在Raspberry Pi上运行代码时,应用程序无法看到包装器指向的DLL。如果使用提供的包装器(snap7.net.cs),请将该文件第43行的位置更改为[UWP app name]\[pathto]\SNAP7.DLL记住C编译包必须编译为任意CPU。你使用VS2015 Visual C++“空白Windows IOT核心控制台应用”模板并将配置类型更改为动态链接库(.dll)吗?我遇到了完全相同的问题。我的解决方案是将dll添加到解决方案资源管理器中。将dll的属性:“复制到输出目录”设置为“如果更新,则复制”,然后当我调用dll时,不会出现拒绝访问错误。但是,您必须找到部署目录。我的文件位于“C:\Data\Users\DefaultAccount\AppData\Local\DevelopmentFiles\”中。应用程序还需要使用DLL调用的任何设备/文件的权限