【发布时间】:2015-09-11 10:07:58
【问题描述】:
我在 Windows 10 上使用 Qt 5.6 Alpha WinRT 端口,并希望从 Qt 应用程序访问 WinRT 的 Wifi Direct API。
我知道应该使用 WRL。但是我在我的应用程序中使用 Wifi Direct API 并尝试来自Microsoft's GitHub repository 的 Windows 通用示例得到不同的行为。更具体地说,我在尝试激活 WiFiDirectDevice 时得到 E_NOTIMPL,而 Microsoft 的示例工作正常。
HStringReference strDevice(RuntimeClass_Windows_Devices_WiFiDirect_WiFiDirectDevice);
ComPtr<IInspectable> insp;
hr = RoActivateInstance(strDevice.Get(), insp.GetAddressOf());
所以我对我从 Qt 应用程序调用什么类型的 API(Windows 商店或桌面)感到困惑?
【问题讨论】:
-
报错很准确,这个真的没有实现。您必须使用工厂函数 FromIdAsync() 创建实例。在示例代码中得到了很好的演示。当你写一点 C++/CX 代码时,你可能会更快地陷入成功的深渊。
-
@HansPassant Qt 强烈建议使用 WRL。而且我没有找到任何关于如何在 Qt 应用程序中使用没有 ABI 命名空间的 C++/CX 和 API 的信息。是否有可能通过 WRL 实现这一目标?
-
@HansPassant 我的意思是为了调用 FromIdAsync 我需要激活 IWifiDirectDeviceStatic 接口,它也会返回 E_NOTIMPL。而且我的 windows.devices.wifidirect.h 中没有工厂
-
@HansPassant 谢谢,切换到 C++/CX 成功了
标签: qt windows-runtime wifi-direct wrl qt5.6