Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: anonymous от Октябрь 06, 2009, 08:01



Название: Релизная сборка
Отправлено: anonymous от Октябрь 06, 2009, 08:01
Добрый день.
Запуск релизных екзешников выдает вот такую ошибку:
"Точка входа в процедуру _Z5qFreePv не найдена в библиотеке DLL QtCore4.dll."
Кто-нибудь сталкивался с подобной проблемой? В чем может быть моя ошибка при сборке программ?


Название: Re: Релизная сборка
Отправлено: Rcus от Октябрь 06, 2009, 08:23
Обычно такое бывает когда библиотеку собирают одним компилятором, а приложение другим. objdump/Dependency Walker обычно сразу снимает все вопросы.


Название: Re: Релизная сборка
Отправлено: cya-st от Декабрь 24, 2009, 22:28
У меня точно такая же ошибка. Собрал Qt 4.6.0. Далее создаю приложение в QTCreator 1.3. Если запускать релизное приложение из QTCreator, то запускается нормально, если из винды товозникает вышеописанная ошибка.


Название: Re: Релизная сборка
Отправлено: G-virus от Декабрь 24, 2009, 22:31
Соберите Qt в статику и все проблемы исчезнут


Название: Re: Релизная сборка
Отправлено: cya-st от Декабрь 24, 2009, 22:37
Соберите Qt в статику и все проблемы исчезнут
Вы наверное не в курсе что под статику не собирается драйвер для PostgreSQL. А мне надо с PostgreSQL.


Название: Re: Релизная сборка
Отправлено: Dendy от Декабрь 24, 2009, 22:39
Возможно PATH присутствуют несколько версий QtCore.dll и неправильная подставляется первой. Единственный способ не попасться на эти грабли - копировать DLL'ки в директорию с программой. Или писать враппер (bat-file?), добавляющий в начало к PATH пусть к правильной директории с QtCore.dll.


Название: Re: Релизная сборка
Отправлено: G-virus от Декабрь 24, 2009, 22:40
Вы наверное не в курсе что под статику не собирается драйвер для PostgreSQL. А мне надо с PostgreSQL.

Я просто этим не пользуюсь, поэтому не знал  :)


Название: Re: Релизная сборка
Отправлено: Dendy от Декабрь 24, 2009, 22:41
Если Qt Creator запускает релизное приложение нормально, значит он просто добавляет к PATH путь к $qtcreator/qt/bin перед стартом программы. То же должны сделать и вы. Или просто скопировать DLL'ки в директорию с программой.


Название: Re: Релизная сборка
Отправлено: niXman от Декабрь 24, 2009, 22:44
Соберите Qt в статику и все проблемы исчезнут
равносильно ответу "убей себя" ;)


Название: Re: Релизная сборка
Отправлено: niXman от Декабрь 24, 2009, 22:46
ааа, ну теперь понятно. в соседней теме "это" и обсуждается :lol


Название: Re: Релизная сборка
Отправлено: cya-st от Декабрь 24, 2009, 23:03
Скопировал dll в директорию с прогой, ошибка "Точка входа в процедуру ??0QVariant@@QAE@AB ... не найдена в библиотеке DLL QtCore4.dll"


Название: Re: Релизная сборка
Отправлено: Dendy от Декабрь 24, 2009, 23:06
Напрашивается вывод, что релизная версия версия программы собрана с другой версией Qt, а не с той DLL, которую вы ей подкладываете. Если Creator запускает релизную версию нормально - ищите какую именно DLL он ей подсовывает.


Название: Re: Релизная сборка
Отправлено: cya-st от Декабрь 24, 2009, 23:09
Как искать незнаю.


Название: Re: Релизная сборка
Отправлено: cya-st от Декабрь 24, 2009, 23:13
Какая-то глючная версия 4.6.0, наверное надо вернутся к старой версии до лучших времен. Может попробовать еще раз пересобрать Qt?


Название: Re: Релизная сборка
Отправлено: niXman от Декабрь 24, 2009, 23:15
Вот Вы мне скажите, при чем тут версия Qt ? У Вас ошибка установки Qt. Скорее всего, как говорилось ранее, вы линкуете программу с одной версией Qt, а запускаете с другой.


Название: Re: Релизная сборка
Отправлено: G-virus от Декабрь 24, 2009, 23:17
равносильно ответу "убей себя" ;)

И как мне это расценивать?????


Название: Re: Релизная сборка
Отправлено: cya-st от Декабрь 24, 2009, 23:22
Ура, нашел в чем проблема. Библиотека QtCore4.dll находится в этих местах: C:\Qt\4.6.0\bin\, C:\Qt\4.6.0\qt\bin\ и C:\Qt\4.6.0\qt\lib\. Несоответсвие (разные размеры файла) в C:\Qt\4.6.0\bin\ по сравнению с C:\Qt\4.6.0\qt\bin\ и C:\Qt\4.6.0\qt\lib\. Теперь вопрос можна заменить библиотеку в C:\Qt\4.6.0\bin\?


Название: Re: Релизная сборка
Отправлено: Dendy от Декабрь 24, 2009, 23:34
Начните с того, что найдёте ВСЕ файлы QtCore4.dll у себя на компьютере. Дальше по очереди подставляете их в программу с смотрите с какой она запустится. Не удивлюсь если ей окажется предыдущая версия Qt, в то время как вы думали, что собирали с текущей 4.6.0.


Название: Re: Релизная сборка
Отправлено: Dendy от Декабрь 24, 2009, 23:37
Программа должна работать с той, что лежит в C:/Qt/4.6.0/qt/bin (она же - C:/Qt/4.6.0/qt/lib). Если это не так, значит вы собирали не с той версией Qt. Нужно вычистить директорию сборки и переконфигурировать проект с нуля.


Название: Re: Релизная сборка
Отправлено: cya-st от Декабрь 24, 2009, 23:43
Старую версию я начисто удалил (такие ошибки я уже давно не допускаю:) ). Прикол в том что папка C:\Qt\4.6.0\bin\ создается при установке версии 4.6.0, в ней еще находится qtcreator.exe Ver. 1.3


Название: Re: Релизная сборка
Отправлено: cya-st от Декабрь 24, 2009, 23:48
Версия файла в C:\Qt\4.6.0\qt\bin\ - 4.6.0.0 от 24.12.2009; а в C:\Qt\4.6.0\bin\ - 4.6.0.0 от 27.11.2009. Прога запускается если я переименовываю папку C:\Qt\4.6.0\bin\.


Название: Re: Релизная сборка
Отправлено: Dendy от Декабрь 24, 2009, 23:50
В C:/Qt/4.6.0/bin лежит DLL'ка именно для Creator'а, вы её не должны использовать ни в коем случае. Если путь к этой директории прописан в PATH - удалите его (путь в PATH) вообще.


Название: Re: Релизная сборка
Отправлено: cya-st от Декабрь 24, 2009, 23:56
Всем спасибо. Выкинул из Path.


Название: Re: Релизная сборка
Отправлено: Dendy от Декабрь 25, 2009, 00:03
И как мне это расценивать?????

Прийдётся смириться с мыслью, что вы садист (-8

Обновлено: Дальшейний офтоп в теме будет удаляться.