我在QtCreator和Visual Studio 2015中尝试了这个。我玩了不同的配置,据我所知,我已经正确设置了环境。
但是,每当我进行API调用(到目前为止我只尝试过WiFi Direct调用)并在Release模式下构建时,我都会收到此错误。
C2664 'long __winRT::__getActivationFactoryByPCWSTR(void *,Platform::Guid &,void **)': cannot convert argument 1 from 'const wchar_t [60]' to 'void *'
在Debug中,我在Visual Studio 2015中遇到这些错误。
Error LNK2038 mismatch detected for '_MSC_VER': value '1800' doesn't match value '1900' in main.obj qtmaind.lib(qtmain_win.obj)
Error LNK2001 unresolved external symbol "public: virtual struct QMetaObject const * __thiscall MainWindow::metaObject(void)const " (?metaObject@MainWindow@@UBEPBUQMetaObject@@XZ) PROJECT mainwindow.obj
Error LNK2001 unresolved external symbol "public: virtual void * __thiscall MainWindow::qt_metacast(char const *)" (?qt_metacast@MainWindow@@UAEPAXPBD@Z) SSLocalServer mainwindow.obj
Error LNK2001 unresolved external symbol "public: virtual int __thiscall MainWindow::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@MainWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z) mainwindow.obj
Error LNK2019 unresolved external symbol "__declspec(dllimport) char const * __cdecl std::_Winerror_map(int)" (__imp_?_Winerror_map@std@@YAPBDH@Z) referenced in function "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall std::_System_error_category::message(int)const " (?message@_System_error_category@std@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@H@Z) qtmaind.lib(qtmain_win.obj)
首先是简单的问题。是否可以使用当前版本的Qt 5.6在桌面应用程序中使用WinRT API(特别是WiFi Direct)?
如果是,我错过了什么?
编辑 - My test project. Qt目录可能需要更改。
答案 0 :(得分:0)
MS标头中的某些宏扩展错误并尝试将错误的内容传递给__getActivationFactoryByPCWSTR
。你需要弄清楚它为什么会发生。 Qt桌面应用并不特别,它们就像任何其他桌面应用一样:如果任何桌面应用可以使用这些API,那么Qt桌面应用也可以。
唉,桌面应用只能使用subset Windows运行时API。 Wifi Direct没有列在那里。也许您应该使用桌面WiFi直接API - 它们更便携。