Russian Qt Forum

Qt => Общие вопросы => Тема начата: Rododendron от Октябрь 26, 2017, 09:57



Название: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: Rododendron от Октябрь 26, 2017, 09:57
В связи с большими объемами информации, которые обрабатывает проект, переход от 32-битной архитектуры на 64 мне кажется наиболее правильным.
Проблема в том, что проект должен работать на Винде, и изначально он написан на Qt4.
Установить Qt4 64-бит на Винду не представляется возможным, было потрачено достаточно много времени на это впустую.
Но зато есть Qt-5.6.3-MinGW64, которая уже проверена одним достаточно большим проектом. Поэтому перенос на эту версию мне видится самым лучшим решением проблемы.
Сначала я установил такую же версию на Линукс, и собрал проект там, т.к. под Линуксом работает GDB.
Но к сожалению чуда не произошло, и в Винде программа крашится в самом начале запуска. Помогите советом, может есть какие-нибудь тулзы, о которых я не знаю, чтобы как-то локализовать проблему? Проект большой, метод выпиливания мне не хотелось бы применять. Пробовал тупо закомментировать весь main(), но все равно крашится. Никаких особых модулей программа не использует:
Код:
QT += core gui widgets sql


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: __Heaven__ от Октябрь 26, 2017, 10:28
Я бы попробовал начать поиски проблемы с использованием valgrind под линуксом. Проанализировав пролог, возможно, найдётся виновник падения под виндой.


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: alex312 от Октябрь 26, 2017, 12:14
gdb работает и под виндой, в чем проблема ? И почему нельзя пользовать msvc ?
Qt5 x64 есть в http://www.msys2.org/


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: Igors от Октябрь 26, 2017, 13:32
Ну всем понятно что нормальное решение одно: апдейтить проект на Qt5, тогда встанет на любой платформе. Желание как-то проскочить без этого (по-быстрому) вполне понятно, но удается редко, времени все равно тратится изрядно, а толку нет.


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: Rododendron от Октябрь 27, 2017, 07:51
Старым добрым методом выпиливания нашел проблему - библиотека vlc-qt собрана была не правильно.
А можно поподробнее, как у вас дебаггер под виндой работает? Винда 64 или 32 битная?
Все мои попытки использовать msvc потерпели неудачу, да и привык я к гнусному компилятору.


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: __Heaven__ от Октябрь 27, 2017, 09:43
Я mingw64 скачиваю отсюда (https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/7.2.0/threads-posix/seh/)
С этим комплектом и gdb поставляется. В qtcreator при создании комплекта для сборки необходимо указать путь к нему.

Компилятор msvc (я пробовал 2015) не особо справляется с c++11 и выше. Имхо, для того, чтобы избежать перепроверок компилируемости кода под разными платформами лучше использовать один компилятор.


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: alex312 от Октябрь 27, 2017, 11:53
А можно поподробнее, как у вас дебаггер под виндой работает? Винда 64 или 32 битная?
Как я уже писал выше я использую msys2. Там есть и компилятор gcc с работающим gdb, и сборки Qt4, Qt5 под 64 бита.


Все мои попытки использовать msvc потерпели неудачу, да и привык я к гнусному компилятору.
msvc 2017 уже почти нормальный. под него есть стандарная 64-битная сборка Qt5.9


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: __Heaven__ от Октябрь 27, 2017, 15:09
alex312, какой версии mingw64 в msys2?


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: alex312 от Октябрь 27, 2017, 16:40
alex312, какой версии mingw64 в msys2?
$ g++ -v
Using built-in specs.
COLLECT_GCC=D:\bin\msys64\mingw64\bin\g++.exe
COLLECT_LTO_WRAPPER=D:/bin/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../gcc-7.2.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --enable-bootstrap --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,objc,obj-c++,fortran,ada --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev1, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld
Thread model: posix
gcc version 7.2.0 (Rev1, Built by MSYS2 project)

Update:
Перечитал вопрос.
$ pacman -Ss crt
mingw32/mingw-w64-i686-crt-git 5.0.0.4966.1eee2140-1 (mingw-w64-i686-toolchain) [установлен]
    MinGW-w64 CRT for Windows
mingw64/mingw-w64-x86_64-crt-git 5.0.0.4966.1eee2140-1 (mingw-w64-x86_64-toolchain) [установлен]
    MinGW-w64 CRT for Windows



Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: __Heaven__ от Октябрь 30, 2017, 09:18
Не совсем понял update. Но, я больше интересовался версией, с помощью которого собираются пользовательские проекты.
Короче говоря, с поддержкой c++17 всё в порядке :) Надо попробовать.


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: __Heaven__ от Октябрь 30, 2017, 15:24
О Божечки, какая это удобная штука. Почему я раньше о ней не знал? Как дурак обновлял все библиотеки скачивая с сайтов производителей, компилировал библиотеки, поставляемые в виде исходников.


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: sergek от Октябрь 30, 2017, 16:25
Это вы про что?


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: __Heaven__ от Октябрь 30, 2017, 19:14
Открыл для себя msys2


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: Racheengel от Октябрь 30, 2017, 21:21
студия community не подойдет?
самый вменяемый отладчик там, имхо.
крэш найти быстро поможет.


Название: Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows
Отправлено: Rododendron от Ноябрь 28, 2017, 10:25
Всем спасибо за отклик. Решил проблему с помощью Линукс на виртуалке. Все равно Валгринд только под Линь существует, так что не стал искать работающий отладчик под Вин. Но на будущее запомнил, что в msys2 работающий отладчик, на досуге как-нибудь гляну.