Исправление ошибок компилятора после удаления #include windows.h и вызовов относительных функций - PullRequest
0 голосов
/ 31 января 2019

Я работаю над VS2017 в Windows 10. У меня есть работающий FSM с консольным приложением Messaging, которое, однако, имеет пару библиотек Windows (windows.h и winmm.lib) и нестандартную библиотеку C ++ (conio.h).Я хочу удалить и / или заменить эти библиотеки, чтобы иметь возможность портировать код C ++ на OSX.Я буду удалять и / или заменять / адаптировать любую текущую функциональность по мере необходимости.

Однако после продолжения я получаю много ошибок компилятора, которые не могу объяснить.Я искал много часов, но не могу найти никаких полезных ссылок, и мне нужна помощь, чтобы выяснить это.

После того, как я удалил #include windows.h из определенного файла заголовка утилиты (ConsoleUtils.h) и удалил одну из его функций, которыеиспользует windows.h, а также все вызовы этой функции, я получаю следующие ошибки компилятора:

  1. В MessageDispatcher.cpp:

класс MessageDispatcher имеетнет члена DispatchMessageW

Ну, MessageDispatcher имеет функцию DispatchMessage() (без 'W' в конце).Я действительно озадачен этим.Если я наведу указатель мыши на красную фигурную линию в определении MessageDispatcher::DispatchMessage, всплывающее окно отобразит

"# define DispatchMessage DispatchMessageW расширяется до DispatchMessageW"

ОднакоУ меня нет такого #define где-нибудь в моем коде!Я даже выполнил текстовый поиск по запросу «DispatchMessageW» во всем решении, и нет ни одного экземпляра этого текста.

В MessageDispatcher.cpp:

Кроме того, внутри функции DispatchMessage() недоступны два закрытых члена (Discharge() и PriorityQ), оба из которых должным образом объявлены и определены, ине имеют ссылки на windows.h.

В двух других классах, которые вызывают MessageDispatcher::DispatchMessage(), я получаю ту же ошибку, как описано в '1' выше.

Если я добавлю #include windows.h назад, все ошибки исчезнут, иПроект собирается и запускается без проблем.

Что может быть причиной этих ошибок и что я могу сделать, чтобы их исправить?

1 Ответ

0 голосов
/ 02 февраля 2019

Где-то после того, как вы определили класс MessageDispatcher и, прежде чем использовать его, что-то включает в себя <windows.h> или какой-либо другой заголовок окна, который вызывает определение макроса DispatchMessage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...