我有一个C#应用程序,目标是桌面和桌面的UWP / Windows-10移动平台。 C#app调用用C ++编写的本机组件。我的本机C ++代码具有Visual C ++组件扩展(C ++ / CX)。然后将本机代码打包为.dll&与应用程序捆绑在一起。
该应用程序在桌面上运行得非常好,即当我在 x86 或 x64 ,本地计算机中运行时,但是在Mobile上运行时遇到此错误,即在 x86移动仿真器或 ARM设备(Nokia 950)上
找不到指定的模块。 (HRESULT的例外情况: 0x8007007E)":空
基本上,我无法在移动模式下加载我的本机库。
我已经读过MSDN page了。我的本机C ++代码没有使用任何不受支持的api。
我尝试了 /" DWINAPI_FAMILY = WINAPI_FAMILY_APP" 和 / D" WINAPI_FAMILY = WINAPI_FAMILY_PHONE_APP" ,但它没有帮助。
在为移动设备构建原生.dll时,是否需要使用一套不同的工具链?我的桌面和移动本机.dll使用相同的链接器设置/标志。
任何帮助将受到高度赞赏
答案 0 :(得分:0)
这似乎是微软的问题。我与一些Microsoft程序管理员有联系。我为他们提供了一个展示这种行为的示例项目。 他们分析了样本项目&他说,这确实是微软的一个问题。
这里的问题是,当应用程序以桌面模式(x86或x64本地计算机)部署时,#34; ucrt已在平台上可用" &安培;因此应用程序工作正常。
在移动平台上 ucrt 不可用&只有在项目中引用它时才会被推送。但由于微软平台上的一些错误,这似乎并没有发生。我无法在移动设备/模拟器上运行该应用程序。