Qt 5.6桌面应用程序(msvc 2015)可以使用WinRT库(C ++ / CX)吗?

时间:2016-05-03 15:08:06

标签: visual-studio qt visual-c++ windows-runtime c++-cx

我在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目录可能需要更改。

1 个答案:

答案 0 :(得分:0)

MS标头中的某些宏扩展错误并尝试将错误的内容传递给__getActivationFactoryByPCWSTR。你需要弄清楚它为什么会发生。 Qt桌面应用并不特别,它们就像任何其他桌面应用一样:如果任何桌面应用可以使用这些API,那么Qt桌面应用也可以。

唉,桌面应用只能使用subset Windows运行时API。 Wifi Direct没有列在那里。也许您应该使用桌面WiFi直接API - 它们更便携。