Почему мне не удается инициализировать библиотеку COM?

0

Я пытаюсь проверить образец msdn на уведомлении WMI в c++, который находится здесь: Пример: получение уведомлений о событиях через WMI в проекте Qt5.2. Все компилируется просто отлично и работает хорошо, но когда я пытаюсь запустить образец код, я застрял в самом начале!
Я получаю сообщение об ошибке:

не удалось инициализировать библиотеку Com

Я где-то читал, что, похоже, Qt инициализирует COM-объекты, поэтому нет необходимости повторно инициализировать его.
В этом случае, если я прокомментирую часть инициализации, я получаю ошибку CoInitializeSecurity.!
Что мне здесь не хватает?

  • 0
    Если Qt инициализирует COM для вас, это дефект в Qt. Qt не может знать, как инициализировать COM для вас, так как он не знает, в какой квартире должен быть ваш поток. Пример кода пытается инициализировать поток, чтобы он находился в многопоточной квартире. Если это не удается, очевидно, Qt инициализировал поток для однопоточной квартиры. РЕДАКТИРОВАТЬ: Пожалуйста, укажите код ошибки.
  • 0
    Спасибо, это код ошибки, который я получаю: Не удалось инициализировать библиотеку COM. Код ошибки = 0xffffffff80010106 И это мой код для регистрации ошибки вместо cout! ui-> txtLog-> setText («Не удалось инициализировать библиотеку COM. Код ошибки = 0x» + QString :: number (hres, 16));
Показать ещё 7 комментариев
Теги:
notifications
events
qt5
wmi

1 ответ

0
Лучший ответ

Из MSDN:

Многопоточная квартира предназначена для использования потоками non-GUI. Нитки в многопоточных квартирах не должны выполнять действия пользовательского интерфейса. Это связано с тем, что для потоков пользовательского интерфейса требуется насос сообщений, а COM не передает сообщения для потоков в многопоточной квартире.

Вместо приложения GUI в qt я попробовал консоль на основе, и она сработала.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню