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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: 0xc000007b при запуске под виндой  (Прочитано 17661 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« : Февраль 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
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #1 : Февраль 02, 2013, 23:31 »

Я помню такую ошибку. Вываливалась у меня из-за неправильной настройки проекта в студии, вроде. Исчезла магическим образом после перестановки IDE и пересборки программы.

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

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

update: при установке рантайма 2012 и запуске с его дллками, выпадает в указанную ошибку. При копировании ваших дллок - выдаёт какую то ошибку настроек и запускается.
« Последнее редактирование: Февраль 03, 2013, 10:07 от Bepec » Записан
Bepec
Гость
« Ответ #2 : Февраль 03, 2013, 10:20 »

Отделяю новую информацию.

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

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

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


1 вложение http://smotr.im/c07r
2 вложение http://smotr.im/c07s
« Последнее редактирование: Февраль 03, 2013, 10:33 от Bepec » Записан
Bepec
Гость
« Ответ #3 : Февраль 03, 2013, 10:47 »

Если можно, соберите пустой проектик с такими же настройками и зависимостями. А я его поковыряю Улыбающийся
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Февраль 03, 2013, 11:51 »

Но там с этими библиотеками недостаточно просто их скопировать,
их нужно еще и зарегистрировать, если не ошибаюсь.
Записан

ArchLinux x86_64 / Win10 64 bit
Bepec
Гость
« Ответ #5 : Февраль 03, 2013, 12:38 »

Самое интересное что без регистрации с его библиотеками всё работает Веселый

PS и вроде регистрация нужна для их поиска. Если же они в папке с программой, то без разницы. Поправьте меня, если я ошибаюсь.
Записан
Aleksei
Гость
« Ответ #6 : Февраль 03, 2013, 13:14 »

1. Если не установлен Update 1 на Visual Studio 2012, то установить.
2. В свойствах проекта Configuration Properties/Linker/System установить Minimum Required Version значение 5.01
3. Пересобрать проект.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Февраль 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 уже был установлен, перед сборкой выполнялась полная очистка
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Февраль 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
« Последнее редактирование: Февраль 03, 2013, 16:48 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #9 : Февраль 03, 2013, 17:59 »

Потыкался, посмотрел обращения - грит не подходит dll.

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

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

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

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

Сообщений: 4747



Просмотр профиля WWW
« Ответ #10 : Февраль 03, 2013, 19:03 »

в винде же первым путём поиска является текущая папка, а потом уже смотрятся системные папки и PATH, разве нет? в подтверждение своих слов приведу что показывает тотал коммандер когда студийные дллки лежат в папке и когда не лежат:


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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #11 : Февраль 03, 2013, 19:44 »

Да, ты прав.

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



Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #12 : Февраль 04, 2013, 12:59 »

значит пока что результаты таковы: с моими дллками всё работает, с установленным vcredist x64 не работает, с vcredist x86 — работает. правильно?

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Февраль 04, 2013, 13:34 »

WinXP 64, стоит SP2 и MSVC 2008. Просто так вякает нет dll, добавил Ваши - пошло
Записан
Bepec
Гость
« Ответ #14 : Февраль 04, 2013, 15:47 »

Всё правильно. 64 сглатывает и выдаёт собственно эту ошибку. Подстановка других dll даёт ошибку не найдена точка входа - всё чин по чину Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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