Сборка приложений ActiveQt (COM) с MinGW - PullRequest
3 голосов
/ 29 июня 2010

Я использую Qt 4.6.3 с MinGW для Windows для сборки приложений Qt, и теперь мне нужно добавить интерфейс COM в мое приложение.Я включил ActiveQt, но получал ошибки после компоновки, потому что мне не хватало копии компилятора MIDL.Я скачал копию последней версии MS Windows SDK, которая включает в себя MIDL, но теперь MIDL жалуется, что не может найти cl.exe.Единственный вывод, который я могу сделать, - это то, что вы можете создавать приложения ActiveQt только с помощью компилятора MS, чего я бы предпочел избежатьСпособ заставить это работать с MinGW, или мне не повезло?

Ответы [ 5 ]

2 голосов
/ 16 марта 2011

Использование компилятора и инструментов MS - единственный надежный способ заставить это работать.

1 голос
/ 28 января 2012

Я согласен со вторым постом Роба: очень плохо использовать mingw для создания объектов ActiveX. У Mingw есть некоторые ошибки, связанные с ActiveX: https://bugzilla.mozilla.org/show_bug.cgi?id=203299, а также: https://qt.gitorious.org/qt/qt/merge_requests/2710. Я убиваю весь день, чтобы обнаружить это. Вместо этого используйте Qt для MSVS, и все будет хорошо. ;)

1 голос
/ 29 июня 2010

Вы можете попробовать реализацию Wine в midl, widl.См. Вики вики-страницу о сборке под Windows.

Если вы хотите быстро запустить ее, получите wine-prgs-0.9.14-mingw.zip и посмотрим, как это работает.

1 голос
/ 29 июня 2010

Что ж, вы можете собрать ActiveQt с MinGW, но, используя кучу COM-компонентов, это может оказаться невозможным, поскольку оно может присутствовать или не присутствовать в MinGW. Некоторые мысли:

  1. Использование любых инструментов MS SDK с MinGW не будет работать (исключение составляет mingw.org + DXSDK, который должен работать большую часть времени).

  2. Вы уверены, что связываете все необходимые библиотеки при компиляции? Я не могу помочь больше, если вы не показываете точные сообщения об ошибках.

  3. Проект mingw-w32 / w64 пытается предоставить полный "Windows SDK для GCC"; он может содержать библиотеки / файлы, которые вы ищете. Они предоставляют компилятор x64 и x86 и довольно хорошую поддержку DX. У меня нет опыта работы с их COM, но я думаю, что он будет немного более полным, чем у mingw.org. Вы всегда можете связаться с разработчиками на форумах или в рассылке, они очень полезны.

0 голосов
/ 20 октября 2017

Я решил эту проблему следующим образом:

Установлены сообщества QtCreator, Msys2 и VS2015.

Запуск Qt Creator с помощью пакетного скрипта:

@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1

setlocal
set MSYSTEM=MINGW32
set MSYS2_PATH_TYPE=inherit
start "" "C:\msys64\usr\bin\mintty" -i /msys2.ico -e /usr/bin/bash --login -c "/c/Qt/Tools/QtCreator/bin/qtcreator.exe"

exit /b 0

Я запускаю QtCreator из среды Msys2, потому что он предоставляет стандартные инструменты Unix, необходимые для создания сторонних разработчиков в моем проекте. Так что теоретически это не обязательно иметь Msys2 для вас.

Обратите внимание: не используйте WinSDK 10.0 (или выше), поскольку в нем нет midl.exe в переменной PATH.

В результате этого будет создана переменная среды PATH с Qt Creator с наивысшим приоритетом (поэтому вы будете использовать gcc из установки Qt), затем Msys2 (чтобы вы могли использовать стандартные инструменты Unix), а также MSVC и WinSDK 8.1 в конце сборка вы найдете мидл компилятор).

Прямо сейчас мне удалось собрать dll и передать его в мидл WinSDK, но сейчас я все еще пытаюсь зарегистрировать его в системе.

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