Russian Qt Forum
Ноябрь 23, 2024, 04:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: ActiveX объект не создается в консольном приложении.  (Прочитано 7104 раз)
Leex
Гость
« : Август 18, 2011, 09:01 »

Валит сегфолт при попытке создать объект.

Сгенерил с помощью dumpcpp обертку, подключил к проекту. Вот собственно код: 
Код:
#include "iidk_comlib.h" 
int main(int argc, char *argv[])
{
  IIDK_COMLib::IIDK_COM *obj=new IIDK_COMLib::IIDK_COM();
  return 0;
}
в pro файле:
Код:
QT       += core
QT       += gui

TARGET = iidk_test_console
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

HEADERS += iidk_comlib.h

SOURCES += main.cpp \
iidk_comlib.cpp

LIBS += -lQAxContainer
аналогичный код в гуишной проге работает, объект создается.
Чего может быть не так?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 18, 2011, 09:05 »

QCoreApplication создай, может поможет.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Leex
Гость
« Ответ #2 : Август 18, 2011, 09:12 »

Попробовал:
Код:
#include <QtCore/QCoreApplication>
#include "iidk_comlib.h"
int main(int argc, char *argv[])
{
  QCoreApplication a(argc, argv); 
  IIDK_COMLib::IIDK_COM *obj=new IIDK_COMLib::IIDK_COM();
  return a.exec();
}
не помогло.
Записан
Leex
Гость
« Ответ #3 : Август 18, 2011, 12:27 »

Помогло создание QApplication.
Правда как-то криво это все выглядит:
Класс, который содержит ActiveX объект и работает с ним, должен еще содержать "ненужный" QApplication, и все это еще должно находиться в библиотеке...

Может есть более логичные способы работы с ActiveX без создания левых объектов?
Записан
Странник
Гость
« Ответ #4 : Август 18, 2011, 12:28 »

необходимо провести инициализацию COM перед началом работы.
Код:
if (CoInitialize(0) == S_OK) //можно работать с COM
else //ошибочка вышла
в GUI-приложениях этого не требуется, поскольку это реализовано в конструкторе QApplication.
Записан
Leex
Гость
« Ответ #5 : Август 18, 2011, 12:41 »

Пробовал я CoInitialize - не катит, так же вываливается
Записан
Странник
Гость
« Ответ #6 : Август 18, 2011, 12:55 »

какая версия Qt, какой компилятор? у меня на Qt 4.7.3 MinGW (SDK) работает все прекрасно в консоли.
желательно минимальный пример.
Записан
Leex
Гость
« Ответ #7 : Август 18, 2011, 13:04 »

qt 4.7.3 mingw 4.4
минимальный пример в шапке.
Записан
Nimbus
Гость
« Ответ #8 : Сентябрь 04, 2011, 12:07 »

необходимо провести инициализацию COM перед началом работы.
Код:
if (CoInitialize(0) == S_OK) //можно работать с COM
else //ошибочка вышла
в GUI-приложениях этого не требуется, поскольку это реализовано в конструкторе QApplication.
o_O а разве COM-объекты создаются через оператор new? : )
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.072 секунд. Запросов: 23.