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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Перевод приложения с Linux на Windows  (Прочитано 17360 раз)
Danila_Bagrofff
Гость
« : Апрель 13, 2009, 13:31 »

Впервые решил попробовать пересобрать приложение, работающее в линуксе, в винду на QtCreator'е. Но что-то не очень успешно.
Как-то с про-файлами раньше не работал. make-файл в линуксе проблем нет составить. Но что надо прописывать в pro-файл, чтобы правильно откомпилировать? Само, собой, никакие линукс-библиотеки в приложении не используются. Только голый c++ и qt.

Но что-то не очень компилится. В чем проблема? Можете посмотреть?
Записан
Rcus
Гость
« Ответ #1 : Апрель 13, 2009, 13:42 »

А как именно не компилится? на Qt SDK 2009.01 (WinXP) все работает (только пара предупреждений).
Записан
spirit
Гость
« Ответ #2 : Апрель 13, 2009, 13:47 »

студией собрал, работает, собрал Qt SDK тоже, пару ворнингов было и все.
Записан
Danila_Bagrofff
Гость
« Ответ #3 : Апрель 13, 2009, 14:01 »

А как именно не компилится? на Qt SDK 2009.01 (WinXP) все работает (только пара предупреждений).

предупреждения - фиг с ними. а вот что выдает компилятор:

Цитировать
Running build steps for project drag...
Creating gdb macros library...
Configuration unchanged, skipping QMake step.
Starting: C:/Qt/2009.01/mingw/bin/mingw32-make.exe debug -w
mingw32-make: Entering directory `C:/drag'
C:/Qt/2009.01/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/drag'
g++ -c -g -Wall -frtti -fexceptions -mthreads -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\Qt\2009.01\qt\include\QtCore" -I"..\Qt\2009.01\qt\include\QtGui" -I"..\Qt\2009.01\qt\include" -I"..\Qt\2009.01\qt\include\ActiveQt" -I"debug" -I"." -I"..\Qt\2009.01\qt\mkspecs\win32-g++" -o debug\main.o main.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\grag.exe debug/dialog.o debug/main.o debug/moc_dialog.o  -L"c:\Qt\2009.01\qt\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
mingw32-make[1]: Leaving directory `C:/drag'
mingw32-make: Leaving directory `C:/drag'
Exited with code 0.

правда собираю тут:
Цитировать
Qt Creator 1.0.0
Based on Qt 4.5.0

Built on Feb 27 2009 at 09:34:37


Copyright 2008-2009 Nokia Corporation. All rights reserved.

The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

или не тем собираю?
« Последнее редактирование: Апрель 13, 2009, 14:02 от Danila_Bagrofff » Записан
Rcus
Гость
« Ответ #4 : Апрель 13, 2009, 14:07 »

Вывод сообщений показывает что компиляция и линковка прошли успешно...
Записан
Danila_Bagrofff
Гость
« Ответ #5 : Апрель 13, 2009, 14:13 »

хм, а почему тогда не запускается приложение?

в папке debug нашел файл: grag.exe, но при запуске:
Цитировать
Starting ...

The process could not be started!

А через оконный менеджер:
Цитировать
Приложению не удалось запуститься, поскольку mingwm10.dll не был найден. Повторная установка приложения ...

Ща попробую переустановить, но что-то с трудом верится, что это поможет запустить приложение.
Записан
Danila_Bagrofff
Гость
« Ответ #6 : Апрель 13, 2009, 14:26 »

не помогло. все тоже. может, что-то не так устанавливаю?

у меня один исходный файл: qt-sdk-win-opensource-2009.01.exe

Вроде в него все вшито. Или чего-то может не хвататать?

Может, вы юзаете более позднюю версию?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #7 : Апрель 13, 2009, 14:46 »

Цитировать
Приложению не удалось запуститься, поскольку mingwm10.dll не был найден. Повторная установка приложения ...

Вам нужно положить mingw10.dll вместе с exe шником. Возможно, если у вас Qt собрана не статиком то потребуются также и QtGui, QtCore ... ну и что вы там использовали...
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Danila_Bagrofff
Гость
« Ответ #8 : Апрель 13, 2009, 14:51 »

Вам нужно положить mingw10.dll вместе с exe шником. Возможно, если у вас Qt собрана не статиком то потребуются также и QtGui, QtCore ... ну и что вы там использовали...

Так, как-то странно получается... мне что, придется каждый раз класть либу к exe-нику?? как-то нелогично.
У меня только исходный exe-ник со всей приблудой qt. Я не могу внести никакие изменения в сборку.

Мне, может, где-то другую версию попробовать скачать?...
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #9 : Апрель 13, 2009, 14:57 »

Цитировать
Так, как-то странно получается... мне что, придется каждый раз класть либу к exe-нику?? как-то нелогично.
У меня только исходный exe-ник со всей приблудой qt. Я не могу внести никакие изменения в сборку.

А по-моему всё очень логично...

Если хотите чтоб всё в одном exe файле было, соберите вашу Qt статически.

./configure -release -static .... Эта теме не нова, поищите по форуму.

 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Danila_Bagrofff
Гость
« Ответ #10 : Апрель 13, 2009, 14:59 »

либу то она сама должна находить. Она есть в папке $Qt\bin\

Но чего-то не хватает. Да и из самой папки приложения она не берет либу.

видимо, самособиралка не катит, нужно из исходников поднимать библиотеку, стобы статиком задать...
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #11 : Апрель 13, 2009, 15:08 »

Цитировать
видимо, самособиралка не катит, нужно из исходников поднимать библиотеку, стобы статиком задать...

Мне не совсем понятно, вы как exe запускаете: через QtCreator (Ctr + R) или заходите в каталог и мышью кликаете? Если последний вариант то нужно с exe держать библиотеки mingw10.dll (QtGui4.dll, QtCore4.dll, ... это если вы собрали как release, а если в debug то QtGuid4.dll, QtCored.4.dll, ...)   
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Danila_Bagrofff
Гость
« Ответ #12 : Апрель 13, 2009, 15:13 »

Мне не совсем понятно, вы как exe запускаете: через QtCreator (Ctr + R) или заходите в каталог и мышью кликаете? Если последний вариант то нужно с exe держать библиотеки mingw10.dll (QtGui4.dll, QtCore4.dll, ... это если вы собрали как release, а если в debug то QtGuid4.dll, QtCored.4.dll, ...)   

И из папки дебага и из папки релиза пробовал:
Цитировать
(через QtCreator (Ctr + R))
Цитировать
Starting ...

The process could not be started!

А через оконный менеджер: (
Цитировать
заходите в каталог и мышью кликаете?
)
Цитировать
Приложению не удалось запуститься, поскольку mingwm10.dll не был найден. Повторная установка приложения ...

То есть и из самого креатора не запускается.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #13 : Апрель 13, 2009, 15:42 »

В переменую среду PATH Windows пропиши пути к директории $QTDIR\bin, и к той директории где лежит mingw10.dll, перегрузи комп, и будет тебе счастье.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
SABROG
Гость
« Ответ #14 : Апрель 13, 2009, 20:22 »

В переменую среду PATH Windows пропиши пути к директории $QTDIR\bin, и к той директории где лежит mingw10.dll, перегрузи комп, и будет тебе счастье.

Вообще в первый раз вижу человека знакомого с linux больше, чем с windows (это я о MinGW).

Я бы не рекомендовал этого делать (решать проблему через пути в PATH). Объясню почему. Если приложение использует плагины (даже те, которые лежат в папке в исходниками Qt), то и плагины и программа пытаются подгрузить в память каждый свой экземпляр библиотек Qt (QtGui*.dll, QtCore*.dll и т.д.). Это приводит к тому, что приложение крашится. Возникает проблема с выполнением плагина и приложения в разных потоках. Я не знаю как обстоят дела в *nix'ах, но под виндой это именно так (откровенно говоря не понимаю почему это происходит, ведь системные библиотеки по 100 раз не загружаются для каждой программы, но для Qt дела обстоят так) . По-нормальному это должно происходить следующим образом: при запуске программы должны загружаться в память Qt'шные библиотеки, затем подргужается плагин и использует те библиотеки, которые уже загружены и являются общими и для программы и для плагинов. И это нормально работает, когда Qt'шные библиотеки находятся в папке с .exe'шником. Предчувствуя гневные посты типа "это касается только тех приложений, которые используют плагины" и т.д., хочу сказать, что лучше сразу привыкать делать по-нормальному иначе это чревато системными ошибками, которые и опытный Qt'шник не отловит через дебаггер.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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