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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: 4.2.3 статически со стат. MSVCRT из сырцов с нуля  (Прочитано 21744 раз)
WW
Гость
« Ответ #15 : Сентябрь 27, 2007, 13:11 »

Эти ошибки сыпят тогда, когда Qt либы собраны по инструкции выше, а в опциях проекта - рантайм dll. Поправь проект и все соберется.
Записан
3epo4
Гость
« Ответ #16 : Сентябрь 27, 2007, 14:01 »

Эти ошибки сыпят тогда, когда Qt либы собраны по инструкции выше, а в опциях проекта - рантайм dll. Поправь проект и все соберется.

В опции Runtime Library стоит Multi-threaded (/MT) или я что-то путаю?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #17 : Сентябрь 27, 2007, 15:08 »

В опции Runtime Library стоит Multi-threaded (/MT) или я что-то путаю?

Все верно. А что за приложение вы пытаетесь собрать? Экзампл или свое? Попробуйте всеже

nmake clean
qmake
nmake
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
3epo4
Гость
« Ответ #18 : Сентябрь 27, 2007, 16:20 »


Все верно. А что за приложение вы пытаетесь собрать? Экзампл или свое? Попробуйте всеже

nmake clean
qmake
nmake


Попробовал, не работает, теже самые ошибки линкера. Собирал примеры Qt.
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #19 : Сентябрь 27, 2007, 17:07 »

Вот что дал поиск в MSDN по предупреждению линкера LNK4098:
Код:
To use this run-time library ignore these libraries:
Single-threaded (libc.lib) - libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
Multithreaded (libcmt.lib) - libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
Multithreaded using DLL (msvcrt.lib) - libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
Debug Single-threaded (libcd.lib) - libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib
Debug Multithreaded (libcmtd.lib) - libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, msvcrtd.lib
Debug Multithreaded using DLL (msvcrtd.lib) - libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib

For example, if you received this warning and you want to create an executable file that uses the non-debug, single-threaded version of the run-time libraries, you could use the following options with the linker:

/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib


И это действительно так. По умолчанию заточка идет под проект с поддержкой DLL. Для статической сборки надо явно указать директивы линкера. А Qt здесь не причем.
Записан
3epo4
Гость
« Ответ #20 : Сентябрь 28, 2007, 06:05 »

Вот что дал поиск в MSDN по предупреждению линкера LNK4098:
Код:
To use this run-time library ignore these libraries:
Single-threaded (libc.lib) - libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
Multithreaded (libcmt.lib) - libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
Multithreaded using DLL (msvcrt.lib) - libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
Debug Single-threaded (libcd.lib) - libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib
Debug Multithreaded (libcmtd.lib) - libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, msvcrtd.lib
Debug Multithreaded using DLL (msvcrtd.lib) - libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib

For example, if you received this warning and you want to create an executable file that uses the non-debug, single-threaded version of the run-time libraries, you could use the following options with the linker:

/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib


И это действительно так. По умолчанию заточка идет под проект с поддержкой DLL. Для статической сборки надо явно указать директивы линкера. А Qt здесь не причем.

Спасибо, примеры теперь собираются, но Assistant не хочет, пишет:
Цитировать
main.obj : error LNK2019: unresolved external symbol "class QObject * __cdecl qt_plugin_instance_qjpeg(void)"
(?qt_plugin_instance_qjpeg@@YAPAVQObject@@XZ) referenced in function "public: __thiscall StaticqjpegPluginInstance::StaticqjpegPluginInstance(void)" (??0StaticqjpegPluginInstance@@QAE@XZ)
..\..\bin\assistant.exe : fatal error LNK1120: 1 unresolved externals
« Последнее редактирование: Сентябрь 28, 2007, 08:33 от 3epo4 » Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #21 : Сентябрь 28, 2007, 16:26 »

Ассистент хочет JPEG-плагин, идем в src/plugins/imageformats/jpeg и делаем последовательно qmake и nmake.
Записан
3epo4
Гость
« Ответ #22 : Сентябрь 28, 2007, 18:15 »

Ассистент хочет JPEG-плагин, идем в src/plugins/imageformats/jpeg и делаем последовательно qmake и nmake.

JPEG-плагин ставится нормально, но компиляция Ассистента не выходит.
« Последнее редактирование: Сентябрь 29, 2007, 04:49 от 3epo4 » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #23 : Сентябрь 28, 2007, 19:48 »

2 3epo4: Попробуйте зделать так:

Удалить имеющеюся сборку и начать заново. В <QTDIR>\mkspecs\win32-X\qmake.conf заменить

QMAKE_CFLAGS_RELEASE   = -O2 -MD
QMAKE_CFLAGS_DEBUG   = -Zi -MDd
     
на

QMAKE_CFLAGS_RELEASE   = -O2 -MT
QMAKE_CFLAGS_DEBUG   = -Zi -MTd

Далее просто сконфигурировать Qt как статическую:

configure -static .....

Я делал именно так, никаких проблем.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
3epo4
Гость
« Ответ #24 : Сентябрь 29, 2007, 04:37 »

2 3epo4: Попробуйте зделать так:

Удалить имеющеюся сборку и начать заново. В <QTDIR>\mkspecs\win32-X\qmake.conf заменить

QMAKE_CFLAGS_RELEASE   = -O2 -MD
QMAKE_CFLAGS_DEBUG   = -Zi -MDd
     
на

QMAKE_CFLAGS_RELEASE   = -O2 -MT
QMAKE_CFLAGS_DEBUG   = -Zi -MTd

Далее просто сконфигурировать Qt как статическую:

configure -static .....

Я делал именно так, никаких проблем.

Понятно. А дерективы embed_manifest_dll и embed_manifest_exe из CONFIG разве не надо убирать?

Не в этом ли проблема "WARNING: Using static linking will disable the use of plugins. Make sure you compile ALL needed modules into the library." ?
« Последнее редактирование: Сентябрь 29, 2007, 05:01 от 3epo4 » Записан
3epo4
Гость
« Ответ #25 : Сентябрь 29, 2007, 05:44 »

Переустановил Qt с исправленным qmake.conf, теперь всё ок.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #26 : Сентябрь 29, 2007, 10:41 »

Понятно. А дерективы embed_manifest_dll и embed_manifest_exe из CONFIG разве не надо убирать?

Не в этом ли проблема "WARNING: Using static linking will disable the use of plugins. Make sure you compile ALL needed modules into the library." ?

Если есть немного времени, вы можите добавить остальные флаги в qmake.conf и попробывать собрать Qt. имхо, проблема не в них, а где-то в пунктах начиная с 5
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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