Миграция Qt из MSV C в MinGW - проблемы с COM-объектами - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь перенести мое приложение Qt на использование набора инструментов MinGW из набора инструментов MSV C.

Приложение использует объект COM, используя директиву #import, поддерживаемую Однако компилятор MSV C, поскольку MinGW не поддерживает это, я пытаюсь выяснить, что мне нужно сделать, чтобы добавить этот COM-объект.

Что я сделал до сих пор:

  1. Используйте dumpcpp для создания файла .h и .cpp для файла .tlb
  2. Добавьте axcontainer в список модулей QT в .pro file
  3. Добавил оба .h и .cpp в мой проект Qt

Создав несколько экземпляров классов из библиотеки COM, я могу получить свой проект для компиляции, однако Кажется, есть большое количество предупреждений по следующим направлениям:

can't find linker symbol for virtual table for `ENCX::IS57Manager' value
found `guard variable for (anonymous namespace)::Q_QGS_qAccessibleFactories::innerFunction()::holder' instead
QAxBase::qt_metacall: Object is not initialized, or initialization failed

mincore\com\oleaut32\typelib\tlibapi.cpp(2279)\OLEAUT32.dll!74D65126: (caller: 74D64EC5) ReturnHr(1) tid(c7e8) 8002801D Library not registered.

Я думаю, что моя главная проблема в том, что я понятия не имею, что означает вышеизложенное.

То, что я также сделал :

  1. Называется CoInitialize, хотя я думаю, что мой QApplication уже делает this
  2. Включен dll вместе со сборкой exe для приложения
  3. Гарантировано, что dll зарегистрирован в системе с использованием regsvr32
...