我已经尝试过创建一个Windows10 C++ UWP xaml应用程序。
我选择这个平台的目的是避免使用多种语言(C#用于WPF gui,C++-CLI用于互操作),并且只对某些C++-CX使用C++。
我的目标是创建一个内部工具来调试PCI驱动程序,而不是创建某种高度安全的windows存储应用程序。
在我看来,UWP应用程序在使用一些WIN API函数时是非常有限制的。例如,我不能使用我的静态库,因为它们使用CreateFile和DeviceIoControl。我收到一个错误,上面写着:error C3861: 'CreateFileA': identifier not found。
即使我设法链接了我的本地库(通过在.cpp文件中隐藏这些函数的使用),这些函数似乎在运行时失败了。
还有什么可以绕过这些限制吗?我只想使用这个平台的C++ UI功能。
发布于 2018-05-03 09:08:10
对坏消息很抱歉。事实上,如果你不符合提到的限制,你的选择不是UWP。做WPF代替。
UWP应用程序是用于集中控制的。这样,您就可以通过Store分发它们,限制它们的文件系统访问,管理内存占用和生存期等等。您可以将它看作是试图停止Win32 API (它很老、容易黑客和无政府主义),并使用沙箱来代替它。
发布于 2018-06-20 21:25:52
在Windows1803中,许多“旧”win32函数仍然可用或已经可用。以UWP为目标当然与Win32 API不同。微软有一个官方支持的Win32 APIs列表,网址是:https://learn.microsoft.com/en-us/uwp/win32-and-com/win32-apis。
CreateFileA不在名单上,但CreateFile2在。
对于设备访问,UWP提供了命名空间Windows.Devices.Custom中的功能。
LoadLibrary\GetProcAddress也可以是解决方案。
大多数限制只适用于上传到商店的UWP应用程序,而不适用于并行加载的应用程序。您只需创建包并将其放在本地网络共享或http服务器上即可。
https://stackoverflow.com/questions/50150817
复制相似问题