Отсутствует & quot; интерфейс & quot; определение при использовании собственного API автоматизации пользовательского интерфейса

Я просто попытался перенести более старый код 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). Использование этого заголовка заставило мой проект скомпилироваться и работать хорошо.

Тем не менее это чувствует себя грязным. Я понятия не имею, является ли этот заголовок правильным и почему у меня вообще есть эта проблема.

Есть идеи, как с этим справиться?

3

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]