Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с QT4 и MS Office Excel
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
abra
Ребята!Всем привет!
Вопрос значит заключается в следующем.Есть коммерческая версия QT.
qt-win-commercial-src-4.4.2
Кодю в QTCreator.
Необходимо вывести данные в Excel.
Прочитал инфу,о том,как это делается.Разобрался впринцепи,но когда начал компилировать,выдалось море ошибок.Не могу разобраться,почему.Примерно понял,что дело в библиотеке вроде,либо в её не собранности...Нужна помощь.

Вообщем код вот такой(вешается на обработчик кнопки):

#include <ActiveQt/qaxobject.h>

void MainWindow::on_pushButton_clicked()
{
    QAxObject* excel = new QAxObject( "Excel.Application", this );
    excel->dynamicCall( "SetVisible(bool)", TRUE );
    QAxObject *workbooks = excel->querySubObject( "Workbooks" );
    QAxObject *workbook = workbooks->querySubObject( "Open(const QString&)", "C:\\data\\A.xls" );
    QAxObject *sheets = workbook->querySubObject( "Sheets" );
    QAxObject *StatSheet = sheets->querySubObject( "Item(const QVariant&)", QVariant("stat") );
    StatSheet->dynamicCall( "Select()" );
    QAxObject *range = StatSheet->querySubObject( "Range(const QVariant&)", QVariant( QString("A1:A1")));
    range->dynamicCall( "Clear()" );
    range->dynamicCall( "SetValue(const QVariant&)", QVariant(5));
}


При компиляции выдаются ошибки(на каждую строку,вот такого содержания)
C:/q/1/mainwindow.cpp:19: undefined reference to `QAxObject::QAxObject(QString const&, QObject*)'
C:/q/1/mainwindow.cpp:20: undefined reference to `QAxBase::dynamicCall(char const*, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&)'
C:/q/1/mainwindow.cpp:21: undefined reference to `QAxBase::querySubObject(char const*, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&)'


Ну и вообщем так далее,на каждую строку.
ViGOur
Читал: Каркас ActiveQt?

Там описано как собирать и где. И настройки проекта в зависиомсти от того, что нужно.
abra
Да,тему видел эту,поэтому и подумал,что может библиотека не собрана...
Значит дело в этом,да?И еще вопрос.Не смейся только,я новичок=))А как узнать,собрана она,или нет=)
Просто у меня в директории ActiveQt лежат файлы то эти все....Они там есть.Или все же еще раз надо сделать всё это?
abra
Там в папке Lib должны появиться именно эти библиотеки для сишки что ли???
Потому что там есть у меня QAxContainer.prl
Это для пёрла я так понимаю...Кстати.Там написано,что qmake запустить,своим make-инсталлятором...
У меня в папке activeqt нет qmake файла.
Где можно почитать про сбор библиотек,или опишите пожалуйста по шагам здесь,чтоб 1 раз и навсегда понять,как это делается.
SABROG
Приблизительно так:

Цитата
cd $QTDIR/src/activeqt
qmake
nmake
cd $QTDIR/tools/activeqt
qmake
nmake
abra
Мне под виндой...Это куда писать???
CMD???
ViGOur
Цитата(abra @ 22.3.2009, 14:08) *
Не смейся только,я новичок=))
Тут ничего смешного нет, все мы когда-то и чему-то учились или учимся. ;)


Цитата(abra @ 22.3.2009, 14:56) *
Там в папке Lib должны появиться именно эти библиотеки для сишки что ли???
Именно так. Там должны появится дополнительно к *.prl файлы *.dll и *.lib.

Цитата(abra @ 22.3.2009, 15:39) *
Мне под виндой...Это куда писать???
CMD???
Да в cmd, причем в той, которая "знает" пути к lib и include. Для VS используй ее CMD для mingw смотри: Сборка Qt с использованием MinGW32 и по аналогии собирай...
Litkevich Yuriy
Цитата(abra @ 22.3.2009, 17:56) *
Потому что там есть у меня QAxContainer.prl
Это для пёрла я так понимаю..
нет, открой файл в текстовом редакторе у видишь, что там.

Цитата(abra @ 22.3.2009, 17:56) *
У меня в папке activeqt нет qmake файла.
он лежит в %QTDIR%\bin и предназначен для создания make-файлов на основе фалов проекта qmake (*.pro)
abra
Что то тяжеловато...
abra
Не получилось у меня,как вы описали...Может,стоит написать,как "БЛОНДИНКЕ"................))))Просто здесь всё настолько тонко видимо,что просто это надо увидеть,как делается.
abra
Скачал библиотеку готовую из инета бесплатно.
Копернул файлик qaxcontainer.dll в путь D:\QT\qt-win-commercial-src-4.4.2\lib
Запустил прогу.
Всё равно такие же ошибки...
Litkevich Yuriy
Цитата
Если вы используете конфигурацию Qt с разделяемыми библиотеками, войдите в подкаталог plugin, запустите qmake и ваш make-инструмент, чтобы собрать подключаемый модуль, который интегрирует модуль QAxContainer в Qt Qt Designer.


что при этих действиях ты видишь? ошибки?
abra
Нажмите для просмотра прикрепленного файла
Зашел в подкаталог plugin.
Запустите qmake(его там нет,(он есть в BIN),но зачем я тогда в plugins заходил(где логика???)????Какая суть от этого.Или это не в проводнике вообще заходить надо было...???) и ваш make инструмент(что это вообще такое???)
qtcreator-0.9.1-beta-windows-setup- сама среда разработки
qtcreator-0.9.2-200812190205-windows-setup - Апдейт к ней
qt-win-commercial-src-4.4.2 -сама библиотека QT.

Если не трудно,наберитесь пожалуйста терпения,и напишите по шагам(ДОСЛОВНО) установку библиотеки...Ребята,неужели так трудно помочь потомкам?
Ведь можно же найти какой то стандарт установки библиотек дополнительных.Т.е что то вроде

1)Вначале у нас есть файлы,которые потребуются для создания библиотеки(путь к файлам)
2)Нам потребуется компилятор их(путь к компилятору)
3)Создайте такой то документ,коперните в него такой то текст,щелкните туда то,и получите то то...
4)Вот то,что получили,это и будет ваша библиотека.
5)Коперните её туда то,запускайте вашу среду разработки приложения,и где-нибудь там меняйте "вот на это".
6)Запускаем проект,все работает...


(P.S это я макет предложил.Просто чтобы понятно было,что прошу.Я не думаю,что все вот так садятся за комп,и сходу компилируют библиотеки...Тот материал,который вы мне дали почитать,про установку путем MinGW мне не особо много дал...Возможно,он мне дал понять на "раз два три" суть,что должно в итоге получиться,и через какие шаги...Но даже вот скажем,я создал файл 4.3.0 .bat(сначала .txt,копернул в него текст,под себя),переименовал его в .bat потом в тотал коммандере,запустил...А он мне пишет ошибку - configure не является системной командой...((((Мы учимся на своих ошибках...Но если бы я знал,в чем мои ошибки,я бы Вас не стал так тревожить.

Напиши пожалуйста всё подробно.Я думаю это ещё даст свои плоды в будущем....
Litkevich Yuriy
Цитата(abra @ 23.3.2009, 12:30) *
Запустите qmake(его там нет,(он есть в BIN),но зачем я тогда в plugins заходил(где логика???)????Какая суть от этого.Или это не в проводнике вообще заходить надо было...???) и ваш make инструмент(что это вообще такое???)

нужно просто выполнитьт команду qmake в каталоге с плагинами. Выполнить в командной строке.

Qt ты собирал сам? или несобирал вовсе?
abra
Мне дали на работе и инструкции к нему(как сделать так,чтобы в QTCreator все работало.Я сделал все по инструкциям и у меня всё работает).
Вот хотелось бы,чтобы такие же инструкции были по установке библиотек.Чтобы один раз сделать все по шагам,и на всё оставшееся время запомнить,как это делается...

Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Litkevich Yuriy
Цитата(abra @ 23.3.2009, 19:44) *
Мне дали на работе и инструкции к нему(как сделать так,чтобы в QTCreator все работало.Я сделал все по инструкциям и у меня всё работает).
Вот хотелось бы,чтобы такие же инструкции были по установке библиотек.
ну а если на работе спросить в чем проблема, почему не собирается QAx... наверняка уже знают ответ.

Здесь же, я должен из тебя выуживать, что у тебя за обстановка, что и как собрано. И ты при этом ничего толком сказать не можешь. Это будет определенно дольше. Попробуй сначала на работе узнать.
abra
))))))))))))))
Я бы сказал,да матом не привыкши ругаться)))А если вкратце,то на работе ответ поступит через неделю,когда человек найдет человека,который значет человека,у которого есть знакомый,который имеет хорошего друга,у которого есть друг,и у этого друга......ZzZZ-ZzZ-ZzZz
Ну короче понятно да,как у нас на работе спросить можно?))))))))

Поэтому я думаю будет быстрее здесь.
А вообще,я поражен тем,что нет документации о фундаменте системы QT...Вот разные сложные вопросы обсуждаем,а на простое,как собрать бибблиотеку,никто так ответа и не смог дать...Печально всё это....
Litkevich Yuriy
Цитата(abra @ 23.3.2009, 20:11) *
А если вкратце,то на работе ответ поступит через неделю,когда человек найдет человека,который значет человека,у которого есть знакомый,который имеет хорошего друга,у которого есть друг,и у этого друга......ZzZZ-ZzZ-ZzZz
:D, нормально!

Цитата(abra @ 23.3.2009, 20:11) *
а на простое,как собрать бибблиотеку,никто так ответа и не смог дать...Печально всё это....
вопрос по сборке решен, если тебя устраивает использование компилятора MinGW32, то выполни все инструкции указанные в нашем руководстве (см. сообщение №7). Выполнить надо с нуля. Т.е. прибить старый каталог Qt и создать новый.

Т.к. у тебя комерческая версия, то, видимо, у конфигуратор у тебя спросит какой-нибудь ключ/серийник, в остальном же отличий быть не должно.
От себя добавлю в вики есть ссылка на архив MinGW32, возьми его (выложили специально т.к. однажды у человека обнаружилась проблема с кривостью его версии компилятора)
abra
Ну это я утрировано конечно,но тем не менее суть такая=))))

Вот я набрал

Пуск->выполнить->cmd =))))))))
У меня открылось C:\Documents and Settings\ ))))))
я набрал cd.. (перешел на каталог выше)
C:\

Что дальше делать?

Всмысле...Зачем серийник????

Нет.Давайте определимся....Если я сейчас говорю про библиотеку,то я имею ввиду "КАК СОБРАТЬ QAXCONTAINER"

Сама QT у меня собрана,работает,всё нормально.))))
Litkevich Yuriy
Цитата(abra @ 23.3.2009, 20:55) *
Если я сейчас говорю про библиотеку,то я имею ввиду "КАК СОБРАТЬ QAXCONTAINER"
чтобы собрать часть библиотеки, нужно знать как собрана основа библиотеки:
1) каким компилятором
2) в каком окружении (значения переменных окружения)
3) в каком режиме собрана библиотека (статическая или динамическая сборка)

Если ответишь на эти вопросы, то смогу подсказать, что делать дальше.
AD
Цитата(abra @ 23.3.2009, 17:55) *
Нет.Давайте определимся....Если я сейчас говорю про библиотеку,то я имею ввиду "КАК СОБРАТЬ QAXCONTAINER"

Сама QT у меня собрана,работает,всё нормально.))))

Где лежит QAxContainer? В самой Qt? Если да, то, возможно, при сборке он не учитывался. Тогда Вам следует перейти в каталог, где он лежит и набрать команду
qmake <pro_name>.pro

pro_name - имя файла с расширением .pro! Собственно таким методом собираются недостающие плагины.

Если же это штуковина, дополнительная к Qt. Как пример, Qwt! То, тогда, возможно, пока что на форуме нет тех, кто с ней работал.... И поэтому лучше постараться найти в интернете тех, кто использовал и знает.... "Паникерство" не поможет...
abra
Вот мне ViGOur написал:
"Цитата(abra @ 22.3.2009, 14:56) *
Там в папке Lib должны появиться именно эти библиотеки для сишки что ли???

Именно так. Там должны появится дополнительно к *.prl файлы *.dll и *.lib."

У меня ПОКА в папке Lib,по пути D:\QT\qt-win-commercial-src-4.4.2\lib есть файлы

libQAxContainer.a
libQAxContainerd.a
libQAxServer.a
libQAxServerd.a
QAxContainer.prl
QAxContainerd.prl
QAxServer.prl
QAxServerd.prl

По поводу статическая или динамическая сборка,я в гугле набрал QaxContainer,мне выдалось
" * Модуль QAxContainer - это статическая библиотека, реализующая производные от QObject и QWidget классы QAxObject и QAxWidget, которые реализованы как контейнеры для COM объектов и элементы упраления ActiveX.
* Модуль QAxServer - это статическая библиотека, реализующая функциональность для внутрипроцессных (DLL) и исполняемых COM-серверов. Данный модуль предоставляет классы QAxAggregated, QAxBindable и QAxFactory."

Чтобы собрать статические библиотеки, войдите в каталог activeqt (обычно QTDIR/src/activeqt), и запустите qmake и ваш make-инструмент в обоих подкаталогах container и control. Библиотеки qaxcontainer.lib и qaxserver.lib будут доступны в QTDIR/lib.

Если вы используете конфигурацию Qt с разделяемыми библиотеками, войдите в подкаталог plugin, запустите qmake и ваш make-инструмент, чтобы собрать подключаемый модуль, который интегрирует модуль QAxContainer в Qt Qt Designer.

Вот не получается у меня сделать,начиная со строк "ЧТОБЫ СОБРАТЬ"
Тем более,я смотрю там / стоят,а это явно не виндовые разделители....->видимо инструкция под линукс.А мне под Windows надо.
AD
Стоп. Есть вопросы:
.a - это замена lib файлов. А вот dll в статике совсем не должно быть. То есть Ваша задача собрать Qt статически! Как я понял, Вы используете mingw. Инструкция есть. Пользуйтесь!
abra
Так.Вот я вызвал командную строку.
Выполнить->cmd
У меня высветилось
C:\Documents and Settings\

Что делать дальше?
AD
Цитата(abra @ 23.3.2009, 19:00) *
Так.Вот я вызвал командную строку.
Выполнить->cmd
У меня высветилось
C:\Documents and Settings\

Что делать дальше?

Перейдите в каталог с Qt Вашей версии!
У вас есть Far, norton commander? В нем проще. В папке должны быть соответствующие папки:
bin
demos
....
plugins
....
файлы
configure.exe
А дальше - выполняйте инструкцию по установке Qt
Установка с использованием MinGW32
Litkevich Yuriy
Цитата(abra @ 23.3.2009, 21:36) *
По поводу статическая или динамическая сборка,я в гугле набрал QaxContainer,мне выдалось
гугл не знает какая у тебя сборка Qt!
т.к. у тебя
Цитата(abra @ 23.3.2009, 12:30) *
qt-win-commercial-src-4.4.2 -сама библиотека QT.
значит ты сам её собирал, чем? как?
если ты не ответишь на 3 мих вопроса, из сообщения № 20, врядли что-то путём получится
AD
ДА кстати.... может меня плющит. У Вас ведь уже собрана библиотека в динамике? А QAxContainer - это статическая библиотека сама по себе. Но ведь никто не сказал, что Вы не можете ее использовать у себя. Включите у себя в проекте эту библиотеку. Как именно - я не знаю, не использую QtCreator!!!
abra
Что такое динамическая и статическая???

P.S Аааааааааааааа блиннннннннннннннн........Как в этой хреноте всей разобраться(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((

УРААААААААА))))))))))))))))))))))))))))сДЕЛАЛ)))))))))))))))))))))))))))))))))))
)))))))))))
НО МОЗГ ПРИШЛОСЬ НАПРЯЧЬ И ПРОЧИТАТЬ 3 ЛИСТА ЛИТЕРАТУРЫ)))))))))))))

Может кому понадобится.
Значит так.Для подключение дополнительных библиотек в проекте(подразумевается,что они у вас собраны в Lib`s необходимо)
В файле проекта (Директория_вашего_проекта\название_проекта.pro) добавить строку LIBS += -lqaxcontainer( в данном случае подключена библиотека,о которой шла речь,в противном случае подключаете библиотеку со своим именем)
AD
Цитата(abra @ 23.3.2009, 19:38) *
Может кому понадобится.
Значит так.Для подключение дополнительных библиотек в проекте(подразумевается,что они у вас собраны в Lib`s необходимо)
В файле проекта (Директория_вашего_проекта\название_проекта.pro) добавить строку LIBS += -lqaxcontainer( в данном случае подключена библиотека,о которой шла речь,в противном случае подключаете библиотеку со своим именем)

Конечно, кому-то и понадобится. Значит, мои догадки были правильными. Но для практики, создайте отдельно еще и статическую сборку, чтобы понимать, как идет сборка Qt! ^)
LE0N
[offtop]
Охренеть. Уже есть "программисты", которые не знают как пользоваться коммандной строкой о_О.
[/offtop]
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.