Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: kambala от Февраль 02, 2013, 20:17



Название: 0xc000007b при запуске под виндой
Отправлено: kambala от Февраль 02, 2013, 20:17
Здравствуйте. Столкнулся с проблемой: на некоторых машинах при запуске приложения вылазит ошибка 0xc000007b. Проблема пока что была выявлена на двух машинах — XP SP3 x86 и 7 SP1 x64, так что закономерности не видно.

Приложение (32-х битное) собрано на 7 SP1 x64 с помощью студии 2012 (тулчейн 110_xp) и самособранной Qt 4.8.4 (использовал VS2012 x86 Native Tools Command Prompt ради 32-битности). Вместе с ним распространяю msvcr110.dll и msvcp110.dll чтобы не нужно было устанавливать vcredist. Тестировал на проблемных конфигурациях, указанных в начале — всё работало.

На просторах интернета самым дельным советом оказалась проверка через dependency walker на предмет зависимостей от 64-битных дллок, но таких обнаружено не было. Также предлагали запустить chkdsk, но это, естественно, не помогло :)

Помогите пожалуйста понять в чём дело и как это исправить. Приложение: http://www.mediafire.com/download.php?d1jf4hzgxgwlh33, студийные дллки: http://www.mediafire.com/download.php?4uv0lsfa1pd5pi4


Название: Re: 0xc000007b при запуске под виндой
Отправлено: Bepec от Февраль 02, 2013, 23:31
Я помню такую ошибку. Вываливалась у меня из-за неправильной настройки проекта в студии, вроде. Исчезла магическим образом после перестановки IDE и пересборки программы.

PS постараюсь накопать ту информацию, что нашёл по этой ошибке, куда то я её записал ведь...

update: записи остались на работе, печалька. Проблема на W7 64 sp1 действительно существует :) Поразбираюсь.

update: при установке рантайма 2012 и запуске с его дллками, выпадает в указанную ошибку. При копировании ваших дллок - выдаёт какую то ошибку настроек и запускается.


Название: Re: 0xc000007b при запуске под виндой
Отправлено: Bepec от Февраль 03, 2013, 10:20
Отделяю новую информацию.

Ошибка при: копировании в папку microsoft версии msvcp110.dll. (только его).

Нет ошибки: при использовании ваших dll.

Какая то тут засада с ними...


1 вложение http://smotr.im/c07r
2 вложение http://smotr.im/c07s


Название: Re: 0xc000007b при запуске под виндой
Отправлено: Bepec от Февраль 03, 2013, 10:47
Если можно, соберите пустой проектик с такими же настройками и зависимостями. А я его поковыряю :)


Название: Re: 0xc000007b при запуске под виндой
Отправлено: kuzulis от Февраль 03, 2013, 11:51
Но там с этими библиотеками недостаточно просто их скопировать,
их нужно еще и зарегистрировать, если не ошибаюсь.


Название: Re: 0xc000007b при запуске под виндой
Отправлено: Bepec от Февраль 03, 2013, 12:38
Самое интересное что без регистрации с его библиотеками всё работает :D

PS и вроде регистрация нужна для их поиска. Если же они в папке с программой, то без разницы. Поправьте меня, если я ошибаюсь.


Название: Re: 0xc000007b при запуске под виндой
Отправлено: Aleksei от Февраль 03, 2013, 13:14
1. Если не установлен Update 1 на Visual Studio 2012, то установить.
2. В свойствах проекта Configuration Properties/Linker/System установить Minimum Required Version значение 5.01
3. Пересобрать проект.


Название: Re: 0xc000007b при запуске под виндой
Отправлено: kambala от Февраль 03, 2013, 16:00
update: при установке рантайма 2012 и запуске с его дллками, выпадает в указанную ошибку. При копировании ваших дллок - выдаёт какую то ошибку настроек и запускается.
ты рантайм 32- или 64-битный ставил? а ошибка настройки — это наверное потому что программа была запущена не от админа.
Отделяю новую информацию.

Ошибка при: копировании в папку microsoft версии msvcp110.dll. (только его).

Нет ошибки: при использовании ваших dll.

Какая то тут засада с ними...


1 вложение http://smotr.im/c07r
2 вложение http://smotr.im/c07s
честно говоря не понял что я должен увидеть на этих картинках
Если можно, соберите пустой проектик с такими же настройками и зависимостями. А я его поковыряю :)
ок, сейчас попробую
PS и вроде регистрация нужна для их поиска. Если же они в папке с программой, то без разницы. Поправьте меня, если я ошибаюсь.
насколько я знаю — не нужна. Qtшные дллки же тоже не нужно регистрировать.
1. Если не установлен Update 1 на Visual Studio 2012, то установить.
2. В свойствах проекта Configuration Properties/Linker/System установить Minimum Required Version значение 5.01
3. Пересобрать проект.
программа была собрана именно с такими настройками и Update 1 уже был установлен, перед сборкой выполнялась полная очистка


Название: Re: 0xc000007b при запуске под виндой
Отправлено: kambala от Февраль 03, 2013, 16:44
вот тестовый проект для студии 2012. в архиве также находится скомпилированный экзешник с помощью Qt 4.8.4.

отличия от реального проекта — в конфигурации ресурсов по умолчанию был добавлен дефайн _USING_V110_SDK71_, а также закомментирована строка в файле ресурсов #include "resource.h" (этот файл когда-то был создан автоматически студией). на всякий случай вот содержимое этого файла:
Код
C++ (Qt)
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by MedianXLOfflineTools.rc
 
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        101
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif
 

с прикреплёнными файлами тут какая-то беда, так что вот зеркало: http://www.mediafire.com/?r1d33311wkb9474


Название: Re: 0xc000007b при запуске под виндой
Отправлено: Bepec от Февраль 03, 2013, 17:59
Потыкался, посмотрел обращения - грит не подходит dll.

CRC дллки не совпадает тупо. Твою сглатывает и продолжает работать (что-то там в реестре).

Другую дллку сгрызает и видимо какой то функции оттуда не достаёт.

Видимо причина такой гадости, что дллки тянутся не твои из папки у пользователя, а, допустим, с windows.

PS мне импонирует версия, что CRC проверочное не совпадает => длл не загружает => пытается обратиться к функции в dll => падает напрочь.


Название: Re: 0xc000007b при запуске под виндой
Отправлено: kambala от Февраль 03, 2013, 19:03
в винде же первым путём поиска является текущая папка, а потом уже смотрятся системные папки и PATH, разве нет? в подтверждение своих слов приведу что показывает тотал коммандер когда студийные дллки лежат в папке и когда не лежат:
(http://i1125.photobucket.com/albums/l592/kambala_decapitator/dlls_inside.png)(http://i1125.photobucket.com/albums/l592/kambala_decapitator/nodlls.png)

Верес, ты так и не сказал какой битности vcredist у тебя стоит.


Название: Re: 0xc000007b при запуске под виндой
Отправлено: Bepec от Февраль 03, 2013, 19:44
Да, ты прав.

x64. Установил x86 - запускаться начала нормально и без твоих dll :)





Название: Re: 0xc000007b при запуске под виндой
Отправлено: kambala от Февраль 04, 2013, 12:59
значит пока что результаты таковы: с моими дллками всё работает, с установленным vcredist x64 не работает, с vcredist x86 — работает. правильно?

хотелось бы чтобы кто-то еще проверил/посмотрел в чём дело.


Название: Re: 0xc000007b при запуске под виндой
Отправлено: Igors от Февраль 04, 2013, 13:34
WinXP 64, стоит SP2 и MSVC 2008. Просто так вякает нет dll, добавил Ваши - пошло


Название: Re: 0xc000007b при запуске под виндой
Отправлено: Bepec от Февраль 04, 2013, 15:47
Всё правильно. 64 сглатывает и выдаёт собственно эту ошибку. Подстановка других dll даёт ошибку не найдена точка входа - всё чин по чину :)