Я просто попытался перенести более старый код C ++ (немногим более 2 лет) в мой проект VS 2013 Qt 5.4 (я использую qmake для генерации моего vcxproj). Этот код предоставляет интерфейс Qt для некоторой части встроенного в Windows API автоматизации пользовательского интерфейса. Я знаю, что код работал в очень похожем проекте с более старыми Qt и более старыми VS.
Однако у меня возникают проблемы с добавлением необходимых включений без ошибок компилятора. Документация говорит, что следующего должно быть достаточно (и это было хватит в старом проекте)
#include <windows.h>
#include <uiautomation.h>
Но сегодня поместить это в мой предварительно скомпилированный заголовок больше не работает. Компилятор жалуется на отсутствие interface
во многих строках, которые выглядят так:
typedef interface IRawElementProviderSimple IRawElementProviderSimple;
Я получаю ошибки C2146
на этих линиях.
Я попробовал подсказки в этот но они не работали. Я не пользуюсь WIN32_LEAN_AND_MEAN
до <windows.h>
и в том числе <objbase.h>
тоже не помогло.
Поэтому я перебрал все папки для определения interface
и я мог бы найти его в заголовке с именем <basetyps.h>
(C: \ Program Files (x86) \ Windows Kits \ 8.1 \ Include \ shared \ basetyps.h). Использование этого заголовка заставило мой проект скомпилироваться и работать хорошо.
Тем не менее это чувствует себя грязным. Я понятия не имею, является ли этот заголовок правильным и почему у меня вообще есть эта проблема.
Есть идеи, как с этим справиться?
Задача ещё не решена.