Проблема с dll-ками Qt |
Здравствуйте, гость ( Вход | Регистрация )
Проблема с dll-ками Qt |
All |
10.9.2009, 1:25
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 10.9.2009 Пользователь №: 1072 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте всем.
Пишу проект по сетевому программированию на Win32 API. Классы Qt(версия 4.5.0) использую только как вспомагательные (QString, QDomDocument и т.д.), к проекту подключаю библиотеки QtCore4.lib, QtXml4.lib, на своей машине все компилируется и запускается. Дальше захотел отладить сетевое взаимодействие своей программы через виртуальную машину. Скинул на виртуалку копию исполняемого файла и необходимые библиотеки (QtCore4.dll, QtXml4.dll), в таблице импорта и экспорта модулей данные длльки видемы, и проходят тест на подключение. При попытке запуска программы у тотала выскакивает сообщение "Программа не запускается", explorer выдает сообщение "This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem". Стал ковырятся в настройках компилятора, поменял параметр Runtime Library c /Multi-thread DLL (/MD) на /Multi-thread (/MT), программа стала запускатся, но появилась ошибка "The application failed to initialize properly (0xc0150002). Click on OK to terminate the application". Стал проверять на других компах, на одном компе те же самые ошибки, на другом все нормально (Qt на них небыло установленно). Написал тестоваю програмку только с одной функцией LoadLibrary( "QtCore4.dll"), там где были ошибки LoadLibrary возвращал ошибку, при этом функция GetLastError возвращала код ошибки 14001. В MSDN'е 14001 - ERROR_SXS_CANT_GEN_ACTCTX (The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log for more detail.) Кто чем может помогите..... Забыл еще сказать, если из исходников исключить переменные и указатели ссылающих на классы Qt, то ошибки пропадают. |
|
|
Litkevich Yuriy |
10.9.2009, 1:44
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Читай здесь (хотя это всё из Асистента )
|
|
|
rnd |
10.9.2009, 10:32
Сообщение
#3
|
Студент Группа: Участник Сообщений: 54 Регистрация: 22.7.2009 Пользователь №: 930 Спасибо сказали: 1 раз(а) Репутация: 0 |
|
|
|
All |
11.9.2009, 1:15
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 10.9.2009 Пользователь №: 1072 Спасибо сказали: 0 раз(а) Репутация: 0 |
Читай здесь (хотя это всё из Асистента ) Конечно интересная статейка, но в моем случае не подходит. Если в статье написанно верно, то грешить нужно на плагены Qt на которые ссылается модуль QtCore4.dll. На моем компе в переменных окружениях Qt упоминается только как path=..\qt\4.5.0\bin, явной ссылки на каталог с плагенами - \plugins нет, и при этом все работает. Способ решение проблемы описсаный в конце статьи (программно задать пути) тоже не подойдет, потому что программа то не запускается. библиотеки рантайма (msvc*.dll) не забыли скопировать? Набор библиотек в каталоге с программой (msvcp90.dll, msvcr90.dll, QtCore4.dll, QtXml4.dll). вы собрали приложение со статич. рантаймом(/MT), а Qt наверно осталось собранным с динамическим Вы случайно не подскажите как Qt статически привезать? |
|
|
rnd |
11.9.2009, 9:16
Сообщение
#5
|
Студент Группа: Участник Сообщений: 54 Регистрация: 22.7.2009 Пользователь №: 930 Спасибо сказали: 1 раз(а) Репутация: 0 |
где-то на форуме уже не раз обсуждалось, но честно говоря не уверен, что это хорошая идея
лучше все-таки рантайм оставить динамическим и разбираться каких библиотек не находит для начала внимательно изучить depends'ом все зависимости (как самой прилаги так и библиотек) кстати, кути и приложение одним компилятором собирались? |
|
|
Litkevich Yuriy |
11.9.2009, 16:09
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
На моем компе в переменных окружениях Qt упоминается только как path=..\qt\4.5.0\bin У меня в этой переменной окружения вообще Qt нет, однако работать программам не мешаетявной ссылки на каталог с плагенами - \plugins нет есть в QtCore.dll явный путь к каталогу, где установлена/собрана Qt (это упомянуто в указанной мною статье)
|
|
|
Rocky |
15.9.2009, 17:15
Сообщение
#7
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
А на виртуальной машине стоит .Net Platform FrameWork? У меня было что-то похожее - прога не запускалась, а после установки фрэймворка все заработало.
|
|
|
All |
22.9.2009, 0:03
Сообщение
#8
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 10.9.2009 Пользователь №: 1072 Спасибо сказали: 0 раз(а) Репутация: 0 |
Заработало после установки "Microsoft Visual C++ 2008 Redistributable.exe", но вопрос остался, почему без дополнительных средств нельзя использовать Qt.
|
|
|
Litkevich Yuriy |
22.9.2009, 0:16
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
molchanoviv |
22.9.2009, 7:34
Сообщение
#10
|
Старейший участник Группа: Сомодератор Сообщений: 597 Регистрация: 18.7.2008 Из: Саратов Пользователь №: 238 Спасибо сказали: 41 раз(а) Репутация: 5 |
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 10:33 |