crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Проблема с 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  


библиотеки рантайма (msvc*.dll) не забыли скопировать?

Цитата(All @ 10.9.2009, 2:25) *
The application failed to initialize properly (0xc0150002). Click on OK to terminate the application".

вы собрали приложение со статич. рантаймом(/MT), а Qt наверно осталось собранным с динамическим
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
All
  опции профиля:
сообщение 11.9.2009, 1:15
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 10.9.2009
Пользователь №: 1072

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 10.9.2009, 2:44) *
Читай здесь (хотя это всё из Асистента ;) )

Конечно интересная статейка, но в моем случае не подходит. Если в статье написанно верно, то грешить нужно на плагены Qt на которые ссылается модуль QtCore4.dll. На моем компе в переменных окружениях Qt упоминается только как path=..\qt\4.5.0\bin, явной ссылки на каталог с плагенами - \plugins нет, и при этом все работает.
Способ решение проблемы описсаный в конце статьи (программно задать пути) тоже не подойдет, потому что программа то не запускается.

Цитата(rnd @ 10.9.2009, 11:32) *
библиотеки рантайма (msvc*.dll) не забыли скопировать?

Набор библиотек в каталоге с программой (msvcp90.dll, msvcr90.dll, QtCore4.dll, QtXml4.dll).

Цитата(rnd @ 10.9.2009, 11:32) *
вы собрали приложение со статич. рантаймом(/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  


Цитата(All @ 11.9.2009, 5:15) *
На моем компе в переменных окружениях Qt упоминается только как path=..\qt\4.5.0\bin
У меня в этой переменной окружения вообще Qt нет, однако работать программам не мешает

Цитата(All @ 11.9.2009, 5:15) *
явной ссылки на каталог с плагенами - \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  


Цитата(All @ 22.9.2009, 4:03) *
почему без дополнительных средств нельзя использовать Qt.
Цитата(All @ 22.9.2009, 4:03) *
"Microsoft Visual C++ 2008 Redistributable.exe"
вопрос к мелкософту
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 22.9.2009, 7:34
Сообщение #10


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Цитата(All @ 22.9.2009, 1:03) *
Заработало после установки "Microsoft Visual C++ 2008 Redistributable.exe", но вопрос остался, почему без дополнительных средств нельзя использовать Qt.

Так это не Qt а все приложения собранные с помощью Visual Studio.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 10:33