Russian Qt Forum

Qt => ActiveX => Тема начата: Day от Январь 06, 2014, 18:24



Название: ActiveQt Ошибки Линковки
Отправлено: Day от Январь 06, 2014, 18:24
Вот моя первая работа с ActiveQt
Код:
#include <QtGui>
#include <ActiveQt\QAxBase.h>
#include <ActiveQt\QAxObject.h>
...
QAxObject *Word = new QAxObject("Word.Application"); // Создаю интерфейс к MSWord
// Ну и так далее...
В pro прописал
Код:
CONFIG = qt release warn_on
CONFIG += qaxcontainer
LIBS += -lqaxserver -luuid
Библиотеки добавлял уже в отчаянии
И простыня ошибок (привожу только начало, т.к. очевидно, что источник - один)
Код:
j:\0903\qt\lib/libQAxContainer.a(qaxbase.o):qaxbase.cpp:(.text+0x12f): undefined reference to `IID_IClassFactory2'
j:\0903\qt\lib/libQAxContainer.a(qaxbase.o):qaxbase.cpp:(.text+0x159): undefined reference to `SysAllocStringLen@8'
j:\0903\qt\lib/libQAxContainer.a(qaxbase.o):qaxbase.cpp:(.text+0x166): undefined reference to `IID_IUnknown'
j:\0903\qt\lib/libQAxContainer.a(qaxbase.o):qaxbase.cpp:(.text+0x191): undefined reference to `SysFreeString@4'
j:\0903\qt\lib/libQAxContainer.a(qaxbase.o):qaxbase.cpp:(.text+0x1ba): undefined reference to `IID_IUnknown'
j:\0903\qt\lib/libQAxContainer.a(qaxbase.o):qaxbase.cpp:(.text+0xb84): undefined reference to `IID_IClassFactory'
Что-то где-то я недоподключаю...Облазил весь гугл и все форумы. Ни у кого моих проблем нет.
Обстановка. Windows XP, Qt 4.5. Работаю без Креатора. Блокнот - qmake -make
Да. Попробовал маленький пример из Бланшет и Саммерфильда - та же куча ошибок



Название: Re: ActiveQt Ошибки Линковки
Отправлено: lit-uriy от Январь 08, 2014, 16:59
ты под MinGW используешь? В нём нужных виндовозных инклюдов нет. Да ещё для ActiveX компилятор его хахаряшек нужен (забыл как зовут)


Название: Re: ActiveQt Ошибки Линковки
Отправлено: Day от Январь 08, 2014, 18:06
ты под MinGW используешь? В нём нужных виндовозных инклюдов нет. Да ещё для ActiveX компилятор его хахаряшек нужен (забыл как зовут)
MinGW, yes!


Название: Re: ActiveQt Ошибки Линковки
Отправлено: Day от Январь 08, 2014, 18:15
Что же делать? Вешаться или топиться? :)
На Бюльдере неско лет назад все с песней получилось!
Затея была в том, чтоб клиента в Бюльдера пересадить полностью на Кьют.
Можно, конечно, просто тем же system из Кутешной проги вызывать Бюльдеровскую...
Но все мое программистское нутро восстает...


Название: Re: ActiveQt Ошибки Линковки
Отправлено: Old от Январь 08, 2014, 18:24
Что же делать? Вешаться или топиться? :)
На Бюльдере неско лет назад все с песней получилось!
Затея была в том, чтоб клиента в Бюльдера пересадить полностью на Кьют.
Можно, конечно, просто тем же system из Кутешной проги вызывать Бюльдеровскую...
Но все мое программистское нутро восстает...
Вы бы поискали в каких библиотеках находятся эти символы.
Напримеро SysAllocStringLen находится в Oleaut32.lib, вот ее еще нужно подключить в проект.


Название: Re: ActiveQt Ошибки Линковки
Отправлено: Day от Январь 08, 2014, 20:55
old, спасибо! Значит потусуюсь еще немного между табуреткой и полыньей :)
А где ее искать-то? В инете? В Бюльдере? У папы Виндовоза?
И как подключить в кутешное pro?
Я как-то с подключением библиотек пока не сталкеровался... Хватало того, что есть.
И вообще-то странновато. У Кьюта есть же библиотеки типа libQAxContainer.a и я их подключал...


Название: Re: ActiveQt Ошибки Линковки
Отправлено: Old от Январь 08, 2014, 21:12
Добавьте к этой строке:
LIBS += -lqaxserver -luuid

что бы получилось:
LIBS += -lqaxserver -luuid -loleaut32


Название: Re: ActiveQt Ошибки Линковки
Отправлено: Day от Январь 08, 2014, 21:31
Ооо! Уже значительно веселее стало! Вместо 168 строк ошибок - всего 27!
Т.е. ясно куда и чем копать. Спасибо вам большое! Очень жалко, что на этом форуме нет системы благодарностей. :)
К сожалению, на сегодня лопата моя - тупа.
С надеждой на дальнейшее сотрудничество, искренне ваш, Day :)


Название: Re: ActiveQt Ошибки Линковки
Отправлено: Day от Январь 09, 2014, 00:35
У MinGW целых 7 библиотек на букву "ole". Завтра займусь.


Название: Re: ActiveQt Ошибки Линковки
Отправлено: carrygun от Январь 09, 2014, 07:46
Нет буквы "ole".


Название: Re: ActiveQt Ошибки Линковки [РЕШЕНО]
Отправлено: Day от Январь 09, 2014, 10:29
Код:
LIBS += -lqaxserver
LIBS += -lqaxcontainer -loleaut32 -lole32 -lgdi32 -luuid
Вот так все собралось,
Всем спасибо!


Название: Re: ActiveQt Ошибки Линковки
Отправлено: lit-uriy от Январь 14, 2014, 02:01
Day а у тебя не требует IDL-файлов/компилятора?


Название: Re: ActiveQt Ошибки Линковки
Отправлено: Day от Январь 14, 2014, 11:20
Day а у тебя не требует IDL-файлов/компилятора?
Требовал. И вообще вел себя странно. Чего-то регистрировал во время(после) сборки. Два раза сам запускал программу (я его не просил). Пока я не убрал из pro строчки
Код:
 CONFIG += qaxserver


Название: Re: ActiveQt Ошибки Линковки
Отправлено: lit-uriy от Январь 14, 2014, 13:35
Day, будь другом выложи простейший компилируемый MinGW-шкой проект который, чего-нибудь делает с Экселем/Вордом.

П.С.
Я в своё время бился бился, так и не понял, как это всё скомпилировать MinGW-шкой, чтобы например в эксель хоть что-нибудь вставить.


Название: Re: ActiveQt Ошибки Линковки
Отправлено: Day от Январь 14, 2014, 14:56
Day, будь другом выложи простейший компилируемый MinGW-шкой проект который, чего-нибудь делает с Экселем/Вордом.
П.С.
Я в своё время бился бился, так и не понял, как это всё скомпилировать MinGW-шкой, чтобы например в эксель хоть что-нибудь вставить.
Вот, пожалуйста, ссылка на Яндекс диск
http://yadi.sk/d/R8lIa0WcG3Jhc
Там есть файлик README.TXT - все описано, и рабочий проект (выжимки)
Но имей в виду, я в этом деле нуб-нубом, и то, что у меня что-то получилось - чистая случайность. Имею в виду ActiveX, так-то в программизме кой-какой опыт есть :)


Название: Re: ActiveQt Ошибки Линковки
Отправлено: lit-uriy от Январь 14, 2014, 17:41
Day, спасибо большое!
Всё компилится и работает (Qt 4.7.2 / MinGW / GCC4.4.0).

Я тоже во всех этих OLE/ActiveX/MS VisualStudio не силён. И не понимаю как работает вся эта кухня с IDL.
Меня всёж не покидает надежда скомпилировать пример examples\activeqt\hierarchy. На данный момент ругается на отсутствие midl.
Я скачал новый MinGW-w64 (новый проект под 32-х и 64-х битные платформы) там есть  widl - клон midl. Но у него аргументы другие, правил-правил Make-файл, но пока без результатно, не генерит tbl-файл и всё тут.


Название: Re: ActiveQt Ошибки Линковки
Отправлено: Day от Январь 14, 2014, 20:41
lit-uriy, Наше общение напомнило мне один мой давний текст, и я подумал, что вам он может быть интересен. Я хотел чуток подправить под сегодняшнии реалии, но оказалось, что подправлять практически нечего.
 У Стругацких есть такая повесть - "Попытка к бегству"
 Фабула - ерунда. А вот что интересно. (И имеет к нам отношение)
 Там (на этой другой планете) есть шоссе.
 По шоссе едут странные машины, с абсолютной проходимостью, вроде танков.
 Но если на их пути человек встанет в некоторую позу (типа - крестом), они останавливаются, и даже едут за этим человеком на обочину, где их можно остановить (тоже некими пассами). Если что не так - давят на хер.
 Естественно, на этой работе используются в основном ЗЭКИ, (в книге эфемеизм - Те Кто Захотел Странного)
 Но вот - остановилось чудовище. А у него - пульт. Дырочки всякие. И ребяты вставляют туды пальцы. Иногда - куда-то едет, иногда - стреляет, иногда чего еще (я не в силах фантазией с Борей и Аркашей тягаться), но чаще просто откусывает пальцы.
 А зэки лезут - если чего получится у кого, тому будет УДО (условно досрочное освобождение).
 Рядом стоят вертухаи, рисуют картинку пульта, фиксируют пальцы откушенные и креативные (не пальцы, конешно, а дырочки в пульте) - вот так эта цивилизация продвигается потихонечку вперед.

 И вот каждый раз, с любой новой замечательной IT-технологией, я чувствую себя тем самым зэком. Дырочек полно. Чем дальше - тем больше. Куда пальчик тыкать - никто не говорит. А я - зэк (другой работы нет - и не хочу).
 Я хочу СОЗДАВАТЬ, и иногда у меня это получается, а яблонька говорит - откушай-ка моего яблочка.
 ЗЫ: Попытка разрушить шоссе с помощью землянских огнеметов ни к чему не привела - токмо хужее стало. (это одна из главных тем Стругацких)



Название: Re: ActiveQt Ошибки Линковки
Отправлено: Johnik от Январь 20, 2014, 09:21
На данный момент ругается на отсутствие midl.
Midl входит в состав Windows SDK.


Название: Re: ActiveQt Ошибки Линковки
Отправлено: lit-uriy от Январь 24, 2014, 07:31
>>Midl входит в состав Windows SDK.
да, я знаю, уменя он стоит, но попытка подсунуть его не увенчалась успехом, начались грабли с тем, что ему ещё и студийный компилер подавай.


Название: Re: ActiveQt Ошибки Линковки
Отправлено: Johnik от Январь 24, 2014, 09:01
В Windows SDK, вроде как, входит компилятор.
В крайнем случае есть Visual C++ Express