我在我的解决方案中有两个项目。一个是C#通用应用程序,另一个是C++项目(从这里获得),并且重新定向到Windows 8.1(当我导入项目时Visual Studio 15执行了此操作)。我已经从我的C#项目引用了C++项目,并将Copy Local设置为true。
代码在所有三个平台(x86、x64和ARM)上都可以构建。但是,在部署到ARM设备时,当我尝试访问C++代码时会抛出异常。在x86和x64版本中,这不是问题,代码可以正常工作。异常是
我的理解是,生成的.dll文件由于某种原因未被复制到设备上。我已经查看了配置设置,就我所知,一切都设置正确(如下图所示)。另一种可能性是C++项目对另一个类有内部依赖关系,我需要在某个地方识别并引用它。堆栈跟踪中的一行(包含在上面的pastebin链接中)表明它发生在
C++代码使用Media Foundation WinRT组件,在ARM设备上应该可以正常工作。
似乎其他SO上的问题(例如here)也研究过这个问题,但只针对特定平台,如x86。
目前为什么在x86和x64上能够正常工作,而在ARM上不能?
截图:
代码在所有三个平台(x86、x64和ARM)上都可以构建。但是,在部署到ARM设备时,当我尝试访问C++代码时会抛出异常。在x86和x64版本中,这不是问题,代码可以正常工作。异常是
System.IO.FileNotFoundException
,这里是详细的pastebin异常信息。我的理解是,生成的.dll文件由于某种原因未被复制到设备上。我已经查看了配置设置,就我所知,一切都设置正确(如下图所示)。另一种可能性是C++项目对另一个类有内部依赖关系,我需要在某个地方识别并引用它。堆栈跟踪中的一行(包含在上面的pastebin链接中)表明它发生在
System.StubHelpers.StubHelpers.GetWinRTFactoryObject(IntPtr pCPCMD)
这一行。C++代码使用Media Foundation WinRT组件,在ARM设备上应该可以正常工作。
似乎其他SO上的问题(例如here)也研究过这个问题,但只针对特定平台,如x86。
目前为什么在x86和x64上能够正常工作,而在ARM上不能?
截图: