c++-winrt - 从 C++/Winrt UWP 应用调用旧版 Win32 API
问题描述
是否可以从使用 C++/WinRT 编写的 UWP 应用调用旧版 Win32 API?我正在尝试从 BluetoothApis.h 调用旧版 API。
这可能吗?应用程序是一个纯桌面应用程序。谢了。
解决方案
此处列出了唯一受 UWP 应用支持的 Win32 API 。
所有其他 Win32 旧版 API 均不可用,这意味着:
头文件中的
WINAPI_FAMILY_PARTITION
宏不会为那些不受支持的函数定义声明,因此使用它们将导致编译时错误。如果您仍然尝试使用这些旧版 Win32 API 之一,那么当您提交到 Windows 应用商店时,WACK 工具会检测到它并使应用程序失败。
如果您尝试在桌面以外的其他设备系列(即 Xbox One)上运行不受支持的 UWP 应用,则可能会丢失那些旧版 Win32 导入。
如果您错误配置了WINAPI_FAMILY
宏或在本地声明了不受支持的功能,则仅加载一侧,因为您从不尝试提交到应用商店,并且只尝试在台式 PC 上运行它,那么该功能可能会或可能不会正常工作。这取决于 Win32 旧版函数如何对所有 UWP 运行的 AppContainer 进程上下文的受限 ACL 做出反应。
TL;DR:不,您不能在 UWP 应用程序中使用 BluetoothAPis.h
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
.. all functions and types in BluetoothApis.h are here...
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
推荐阅读
- python - 创建滚动平均熊猫
- c - 由于“return(0)”,“Hello World”没有编译?
- html - 如何在没有的情况下获取字符串
- javascript - TypeError: arr1.flat 不是 JavaScript 函数
- java - protoc 生成的基本文件名与 java 不同
- c++ - 为什么 C++ lambda 重载的行为不符合预期?
- ruby-on-rails - therubyracer 找不到合适的图像 mach-o,但架构错误
- python - 附加两个数据集(MNIST 和 SVHN)
- go - Gorm AutoMigrate 可能没有像我认为的那样工作?
- reactjs - React Native:SafeAreaProvider有什么用