2010-06-24 2 views
1

Я хотел бы скомпилировать статическую версию инструментария Qt на платформе Windows (Windows XP SP3). Я загрузил последнюю версию для Windows и успешно ее установил. Затем я открыл командную строку Qt 4.6.3 в меню Пуск и вызывается:Неопределенные ссылки при компиляции статической сборки Qt на Windows

configure -static -release -nomake examples -nomake demos -fast

конфигурации выполняет хорошо, и первую часть mingw32-make, а также. В какой-то момент я получаю много неопределенных ссылок:

mingw32-сделать [4]: ​​Ввод каталог `C: /Qt-static/4.6.3/src/tools/moc»
г ++ -c - O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_MOC -DQT_BOOTSTRAPPED -DQT_LITE_UNICODE -DQT_TEXTCODEC -DQT_NO_CAST_FROM_AS CII -DQT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM -DQT_NO_GEOM_VARIANT -DQT_NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_STL -DQT_NO_SYSTEMLOCALE -DQT_NO_TEXTST REAM -DQT_NO_THREAD - DQT_NO_UNICODETABLES -DQT_NO_USING_NAMESPACE -DQT_NODLL -I " ." -Я"." -I "...... \ include" -I "...... \ include \ QtCore" -I "...... \ include \ Qt Xml" -I ".... \ xml "-I" c: \ Program Files \ Microsoft Visual Studio .NET 2003 \ SDK \ v1. 1 \ include "-I" ...... \ mkspecs \ win32-g ++ "-o release \ moc.o moc.cpp

...

г ++ -enable-STDCALL-Fixup -Wl, -enable-авто-импорт -Wl, -enable-среда-псевдо-отн ос -Wl, -s -Wl , -subsystem, console -mthreads -Wl -o ...... \ bin \ moc.exe release/m oc.o выпуск/preprocessor.o выпуск/generator.o выпуск/parser.o выпуск/token.o release/main.o -L "c: \ Program Files \ Microsoft Visual Studio .NET 2003 \ SDK \ v1.1 \ Lib \" -LC: /Qt-static/4.6.3/sr с/инструменты/начальной загрузки/релиз -lbootstrap -luser32 выпуска/moc.o: moc.cpp :(текст + 0x14b). неопределенная ссылка на QByteArray::shared_ null'
release/moc.o:moc.cpp:(.text+0x150): undefined reference to
QByteArray :: shared_ нуль»
релиз/moc.o: MOC. каст :(текст + 0x156):. неопределенная ссылка на `QByteArray :: shared_

...

список неопределенных ссылок на самом деле гораздо больше.

Это нестандартная установка по умолчанию для Windows. Интересно, что я делаю что-то неправильно или есть ошибка в наборе инструментов.

+0

Вы видели, где QByteArry :: shared_null определен? Скорее всего, вы неправильно настроили установку, поэтому такой широко используемый пакет нарушен. – msw

ответ

1

У меня были подобные проблемы. В моем случае Visual Studio установила параметры среды
INCLUDE и LIB, которые смутили марку.

Решение было отключить их из командной строки

set INCLUDE= 
set LIB= 

до компиляции библиотек Qt.

+0

Да, это хороший кандидат для возникновения проблемы: флаг -I «.NET 2003 ...» также заставил меня подумать, что произошло смешение библиотек и заголовков mingw и msvc. – rubenvb