Russian Qt Forum
Ноябрь 24, 2024, 22:40
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Установка, сборка, отладка, тестирование
>
Проблема с линковкой (unresolved externals)
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Проблема с линковкой (unresolved externals) (Прочитано 12141 раз)
usr00210
Гость
Проблема с линковкой (unresolved externals)
«
:
Август 25, 2010, 13:45 »
Всем привет!
1. Скачал и установил Qt SDK 2010.04 для Windows. При установке не устанавливал minGW (хочу использовать Qt Creator как IDE + VS2005 tools).
2. Создаю простейшее приложение из пары строк типа QCoreApplication a(argc, argv);
3. По умолчанию проект (Makefile.debug) требует QtCored4.lib (т.е.) динамическая линковка Qt-шных библиотек, но я .lib файлов вообще не наблюдаю в директории /lib - только статические архивы .а
4. Руками в Makefile.debug меняю LIBS на QtCored4.а и получаю несколько unresolved:
main.obj:: error: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QCoreApplication::~QCoreApplication(void)" (__imp_??1QCoreApplication@@UAE@XZ)
main.obj:: error: unresolved external symbol "__declspec(dllimport) public: static int __cdecl QCoreApplication::exec(void)" (__imp_?exec@QCoreApplication@@SAHXZ)
main.obj:: error: unresolved external symbol "__declspec(dllimport) public: __thiscall QCoreApplication::QCoreApplication(int &,char * *)" (__imp_??0QCoreApplication@@QAE@AAHPAPAD@Z)
т.е. что-то не так с библиотеками. вообще обычно архивы .а используются в Линухе.
Подскажите пожалуйста как обойти эти грабли?
пс. документация у Qt ужасная и бестолковая на мой взгляд =(
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Проблема с линковкой (unresolved externals)
«
Ответ #1 :
Август 25, 2010, 13:51 »
вы либо юзаете Qt SDK как она есть (включая мингв), либо качаете либы для студии (бла бла VS2008 opensource development), по желанию качаете либо креатор, либо интегратор в студию и с ними работаете.
.а файлы - это не линуксовые библиотеки, а ggc'шные (то есть мингв). мингв либы qt (которые идут в поставке с SDK) и студийный компилер несовместимы
неужели доки в мсдн лучше? ахаха
Записан
BRE
Гость
Re: Проблема с линковкой (unresolved externals)
«
Ответ #2 :
Август 25, 2010, 13:53 »
Цитата: usr00210 от Август 25, 2010, 13:45
1. Скачал и установил Qt SDK 2010.04 для Windows. При установке не устанавливал minGW (хочу использовать Qt Creator как IDE + VS2005 tools).
В SDK лежат собранные библиотеки MinGW, если хочешь использовать VS, то перекомпилируй Qt этим компилятором.
Цитата: usr00210 от Август 25, 2010, 13:45
пс. документация у Qt ужасная и бестолковая на мой взгляд =(
Удивило.
Это ты наверное MSDN сравниваешь?
Записан
usr00210
Гость
Re: Проблема с линковкой (unresolved externals)
«
Ответ #3 :
Август 25, 2010, 13:54 »
Цитата: Авварон от Август 25, 2010, 13:51
вы либо юзаете Qt SDK как она есть (включая мингв), либо качаете либы для студии (бла бла VS2008 opensource development), по желанию качаете либо креатор, либо интегратор в студию и с ними работаете.
.а файлы - это не линуксовые библиотеки, а ggc'шные (то есть мингв). мингв либы qt (которые идут в поставке с SDK) и студийный компилер несовместимы
неужели доки в мсдн лучше? ахаха
Спасибо за ответ! Смутно подозревал именно это =)
Сейчас на этапе новичка Qt для меня доки мсдн действительно _значительно_ лучше Qt-шных. По крайней мере речь идет о тех, которые включены в SDK.
Записан
Alex_cs_gsp
Гость
Re: Проблема с линковкой (unresolved externals)
«
Ответ #4 :
Август 25, 2010, 15:19 »
Мне тоже MSDN намного больше нравится.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Проблема с линковкой (unresolved externals)
«
Ответ #5 :
Август 25, 2010, 15:20 »
/*тычет пальцем и смеется*/
Записан
usr00210
Гость
Re: Проблема с линковкой (unresolved externals)
«
Ответ #6 :
Август 25, 2010, 15:43 »
Цитата: Авварон от Август 25, 2010, 15:20
/*тычет пальцем и смеется*/
звезд много, а смеешься =)
понятно ведь, что это дело привычки.
у меня другая проблема возникла. помогите ее разрешить пожалуйста!
установил библиотеки для VS2008 (у меня стоит 2005). проект линкуется в статике (размер исходника 440КБ).
но при попытке запустить простейшее приложение вылетает ошибка: The application failed to initialize properly (0xc0150002). Click OK to terminate the application.
Dependency Walker говорит, что QtCored4.DLL правильная, но внутри нее есть обращения к MSVCP90D.DLL которого в системе нет.
Возможно в этом дело.
QMAKESPEC=win32-msvc2005
QTDIR=C:\Nokia\MSVC
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Проблема с линковкой (unresolved externals)
«
Ответ #7 :
Август 25, 2010, 15:57 »
Цитата: usr00210 от Август 25, 2010, 15:43
звезд много, а смеешься =)
понятно ведь, что это дело привычки.
у меня другая проблема возникла. помогите ее разрешить пожалуйста!
установил библиотеки для VS2008 (у меня стоит 2005). проект линкуется в статике (размер исходника 440КБ).
но при попытке запустить простейшее приложение вылетает ошибка: The application failed to initialize properly (0xc0150002). Click OK to terminate the application.
Dependency Walker говорит, что QtCored4.DLL правильная, но внутри нее есть обращения к MSVCP90D.DLL которого в системе нет.
Возможно в этом дело.
QMAKESPEC=win32-msvc2005
QTDIR=C:\Nokia\MSVC
offtop: раз вы так ориентируетесь в мсдн, то в чем разница между System.IO.DriveInfo.Name и System.IO.DriveInfo.RootDirectory (
http://msdn.microsoft.com/ru-ru/library/system.io.driveinfo_properties.aspx
).
не оффтоп: я так полагаю, что дело в разнице версий кьюта и студии и ничегонесделать (с) По крайней мере так пишут тут:
http://tech.vkapoor.com/2007/12/error-code-0xc0150002-application.html
PS: либы от 2008 в 10й работают, проверял лично (у меня одного кутя работает без нареканий?
)
Записан
usr00210
Гость
Re: Проблема с линковкой (unresolved externals)
«
Ответ #8 :
Август 25, 2010, 16:14 »
Цитата: Авварон от Август 25, 2010, 15:57
offtop: раз вы так ориентируетесь в мсдн, то в чем разница между System.IO.DriveInfo.Name и System.IO.DriveInfo.RootDirectory (
http://msdn.microsoft.com/ru-ru/library/system.io.driveinfo_properties.aspx
).
не оффтоп: я так полагаю, что дело в разнице версий кьюта и студии и ничегонесделать (с) По крайней мере так пишут тут:
http://tech.vkapoor.com/2007/12/error-code-0xc0150002-application.html
PS: либы от 2008 в 10й работают, проверял лично (у меня одного кутя работает без нареканий?
)
на первый вопрос не отвечу, не моя специализация =)
а вот построив приложение в Release конфигурации у меня получилось ее запустить без проблем. При этом QTCORED4.DLL все таже... т.е надо найти 10 отличий между сборками в Release и Debug со стороны Qt. Пробовал патчить mkspecs\win32-msvc2005\qmake.conf, как в местой вики сказано, но результатов нет. Может что-то еще?
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Проблема с линковкой (unresolved externals)
«
Ответ #9 :
Август 25, 2010, 16:18 »
хм, а как вы прилинковали релиз приложение к дебагнутым библиотекам?
Записан
usr00210
Гость
Re: Проблема с линковкой (unresolved externals)
«
Ответ #10 :
Август 25, 2010, 16:29 »
Цитата: Авварон от Август 25, 2010, 16:18
хм, а как вы прилинковали релиз приложение к дебагнутым библиотекам?
никак, линковка с релиз библиотеками. я имел ввиду то, что релиз QtCore4 также ссылается на несуществующую ДЛЛ, что не мешает приложению запускаться.
Записан
Hellraiser
Бывалый
Offline
Сообщений: 451
Re: Проблема с линковкой (unresolved externals)
«
Ответ #11 :
Август 25, 2010, 18:30 »
Сильно подозреваю, что какая-то программа притащила с собой рантайм 2008 студии (msvcp
90
.dll и msvcr
90
.dll). Но этот рантайм только для релизных версий библиотек. Поэтому релиз работает, а дебаг - нет. Дебажный рантайм, насколько я знаю, ставит только сама студия.
Записан
usr00210
Гость
Re: Проблема с линковкой (unresolved externals)
«
Ответ #12 :
Август 26, 2010, 01:42 »
Цитата: Hellraiser от Август 25, 2010, 18:30
Сильно подозреваю, что какая-то программа притащила с собой рантайм 2008 студии (msvcp
90
.dll и msvcr
90
.dll). Но этот рантайм только для релизных версий библиотек. Поэтому релиз работает, а дебаг - нет. Дебажный рантайм, насколько я знаю, ставит только сама студия.
Предположение не верно.
1.
рантайм 2008 это не msvcp
90
.dll и msvcr
90
.dll, а msvcp
80
.dll и msvcr
80
.dll
(пардон, с утра плохо вижу =) я говорил о 2005 студии)
2. msvcp
90
.dll и msvcr
90
.dll не обнаруживается в стандартных путях, о чем нам и сообщает Dependency Walker (см. выше)
«
Последнее редактирование: Август 26, 2010, 01:44 от usr00210
»
Записан
Hellraiser
Бывалый
Offline
Сообщений: 451
Re: Проблема с линковкой (unresolved externals)
«
Ответ #13 :
Август 26, 2010, 19:42 »
Цитата: usr00210 от Август 26, 2010, 01:42
2. msvcp
90
.dll и msvcr
90
.dll не обнаруживается в стандартных путях, о чем нам и сообщает Dependency Walker (см. выше)
Их там и не должно быть: внимательно изучаем содержание папочки %WINDIR%\WinSxS. Это Dependancy Walker не может найти, а винда свой (мелкомягкий) рантайм знает где искать.
Записан
usr00210
Гость
Re: Проблема с линковкой (unresolved externals)
«
Ответ #14 :
Август 28, 2010, 11:48 »
Цитата: Hellraiser от Август 26, 2010, 19:42
Цитата: usr00210 от Август 26, 2010, 01:42
2. msvcp
90
.dll и msvcr
90
.dll не обнаруживается в стандартных путях, о чем нам и сообщает Dependency Walker (см. выше)
Их там и не должно быть: внимательно изучаем содержание папочки %WINDIR%\WinSxS. Это Dependancy Walker не может найти, а винда свой (мелкомягкий) рантайм знает где искать.
удар в голову. жестокий и беспощадный.
спасибо за информацию, прожил бы вот так всю жизнь и не знал бы
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...