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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: сборка проекта разработанного в Linux  (Прочитано 8382 раз)
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« : Январь 16, 2009, 03:59 »

В Linux была написана программа использующая собственный виджет. Он интегрировался в дизайнер и копировался в /usr/lib для работы самой программы.

Как быстро собрать такого плана проект под винду.

Попробовал сам:
1) скачал QT
2) собрал
3) сгенерил для своего проекта sln
при компиляции в 2008 студии на этапе сборки(линковки) уже приложения (виджет собирается первым) - не хочет находит функции связанные с виджетом
Пробовал подсовывать lib файл подпроекту программы всяческим образом(через студию) - ничего не получилось

В любом случае даже если это и можно поправить - меня не устраивает т.к. нужна гот. система для пересборки Linux проектов имея pro файл - без шаманства..

Программирую в линукс - мне надо только готовый инструментарий для компиляции в винде.
QtCreator - для этого предназначен - может помочь? (спрашиваю т.к. качать 200 мб)
Записан
Rcus
Гость
« Ответ #1 : Январь 16, 2009, 04:11 »

А этот ваш виджет оформлен в виде динамический библиотеки? Если так, то http://www.prog.org.ru/topic_8259_0.html
Не понимаю шаманства с созданием .sln, если нужно только собрать проект и есть уже .pro файл, то почему бы просто не использовать qmake && nmake?
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #2 : Январь 16, 2009, 05:14 »

потому что не работает - пробовал и qmake, nmake - в первую очередь так сделал т.к. в линуксе так проект собираю

виджет оформлен не только в кач. дин. билиотеки - но и в кач. плагина к дизайнеру
Записан
Rcus
Гость
« Ответ #3 : Январь 16, 2009, 05:39 »

Тогда все же советую почитать статью по ссылке.
Записан
BaltikS
Гость
« Ответ #4 : Январь 16, 2009, 07:58 »

break какие хоть ошибки пишет? Для того чтобы скомпилеть плагин для дизайнера, не обязательно делать проект студии. Нужно хотя бы чтобы компилятор видел Qt....
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #5 : Январь 16, 2009, 11:35 »

Цитировать
скомпилеть плагин
ПЛАГИН ДЛЯ ДИЗАЙНЕРА СОБИРАЕТСЯ!!!
Программа его использующая не может собраться зависимости на этапе линковки - unresolved symbol
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #6 : Январь 16, 2009, 11:37 »

Цитировать
Тогда все же советую почитать статью по ссылке.

Советую тебе тогда тоже почитать! К моей текущей проблеме статья отношенияне не имеет!

Виджет написан классическим для QT способом - т.е. класс и система плагинов QT т.что тут все ок. В Linux все работает и собирается на рас.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #7 : Январь 16, 2009, 11:45 »

Советую тебе тогда тоже почитать! К моей текущей проблеме статья отношенияне не имеет!
...
В Linux все работает и собирается на рас.

Имеет самое прямое отношение! Linux != Windows. В Винде в этом плане по-другому! Чем просто спорить, взял бы да и прочел статью и попробывал реализовать так как написано.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #8 : Январь 16, 2009, 11:47 »

Цитировать
Имеет самое прямое отношение! Linux != Windows. В Винде в этом плане по-другому! Чем просто спорить, взял бы да и прочел статью и попробывал реализовать так как написано.

На кой черт я использую систему плагинов QT - чтобы в каждой системе библиотеки переписывать? Почему вы вообще тк уверены что вопрос в этом - я уже повторяюсь но DLL у меня прекрасно собирается - не соб-ся только программа в кот. эта библиотека есть как зависимость
Записан
Rcus
Гость
« Ответ #9 : Январь 16, 2009, 11:49 »

Успокойтесь, проблема не смертельна и вполне разрешима. Если не хотите показывать сообщения компилятора/исходники (хотя исходники не надо, хотелось бы взглянуть на заголовки), то давайте действовать наугад. Попробуйте посмотреть экспортируемые символы библиотеки через Dependency Walker (из состава Platform SDK) или аналогичную программу. Попробуйте собрать компилятором MinGW.
« Последнее редактирование: Январь 16, 2009, 11:50 от Rcus » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #10 : Январь 16, 2009, 11:55 »

я уже повторяюсь но DLL у меня прекрасно собирается - не соб-ся только программа в кот

Проблема в линковке, ведь так? А не линкуестся, потому что ничего не экспортируется из вашей DLL.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
BaltikS
Гость
« Ответ #11 : Январь 16, 2009, 12:07 »

Необходимо проверить, подхватывает ли дизайнер этот плагин?
Если нет, то скопировать собранную DLL и LIB в папку QTDIR/plugins/designer и ещё раз собрать проект....
« Последнее редактирование: Январь 16, 2009, 12:10 от BaltikS » Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #12 : Январь 16, 2009, 13:59 »

Проблема была в библиотеке! Я был неправ. Подмигивающий А все правы!

Но читая статью увидел там что надо использовать Q_DECL_IMPORT/Q_DECL_EXPORT только при использовании MSVC то есть компилятора от майкрософт.

Скачал qt creator - собственно был интересен тем что там mingw и qt собранный под винду есть.

В виджете 2 класса сам виджет и интерфейсная обвязка-класс для дизайнера в обоих поставил Q_DECL_EXPORT - тогда проект стал собираться. Получается что ничего из библиотеки не экспортится не из-за использования компилятора майкрософт - а из-за платформы windows.
Собирал через командную строку minGW - то есть
qmake
make

Но теперь почему то этот собранный виджет не работает и в дизайнере - не появляется (должен появиться на отдельной вкладке как в линукс) - подкидывал именно в QT (plugins/designer) кот. идет с QtCreator - что еще нужно сделать?

Собственно и в программе виджет ведет себя так же - как в дизайнере, она запускается но никакой прорисовки - пустота там где он должен быть..
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #13 : Январь 16, 2009, 14:09 »

О нет - я ошибся опять !!! В программе виджет работает (он отображает картинку - а у меня при компировании проекта из виндовс просто имена побились). А вот в дизайнере пока его не могу заставить работать - что еще упустил?

За остальное всем спасибо!
Записан
Rcus
Гость
« Ответ #14 : Январь 16, 2009, 15:30 »

qthelp://com.trolltech.designer.450/qdoc/designer-creating-custom-widgets.html
Цитировать
Plugin Requirements

In order for plugins to work correctly on all platforms, you need to ensure that they export the symbols needed by Qt Designer.

First of all, the plugin class must be exported in order for the plugin to be loaded by Qt Designer. Use the Q_EXPORT_PLUGIN2() macro to do this. Also, the QDESIGNER_WIDGET_EXPORT macro must be used to define each custom widget class within a plugin, that Qt Designer will instantiate.
//guess
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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