Ошибка компиляции Qt Creator ":: swprintf and :: vswprintf не был объявлен" - PullRequest
10 голосов
/ 15 июля 2011

Пока что я написал весь свой код в visual studio, и теперь мне нужно добавить в него некоторый интерфейс, чтобы я использовал Qt.Поэтому я добавил каждый файл в свой проект (кроме основного класса), а затем попытался скомпилировать его с помощью Qt.так как я использовал некоторые функции c ++ 0x, мне пришлось добавить эту строку в файл проекта:

QMAKE_CXXFLAGS += -std=c++0x

, затем я попытался скомпилировать ее.есть только две ошибки (может быть больше, но компилятор останавливается на этих двух)

In file included from d:\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/bits/postypes.h:42,

                 from d:\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/iosfwd:42,

                 from d:\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/ios:39,

                 from d:\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/ostream:40,

                 from ../TranslatorBase/ttObject.h:5,

                 from ../TranslatorBase/ttArray.h:5,

                 from ../TranslatorBase/ttArray.cpp:1:

d:\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/cwchar:159: error: '::swprintf' has not been declared

d:\qt\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/cwchar:166: error: '::vswprintf' has not been declared

Я понятия не имею, почему должна быть такая ошибка.и чтобы убедиться, что я сначала попытался скомпилировать тот же проект, используя cygwin / gcc, используя эту команду:

gcc -std=c++0x TranslatorBase/ttArray.cpp -c -o ttArray.o

там нет ошибок, он компилируется даже без каких-либо предупреждений.Фактически каждый файл в моем проекте компилируется без каких-либо предупреждений.

Сейчас я использую Qt Creator v2.0.1 на основе Qt v4.7.0 и использует mingw / gcc v4.4.0

- edit -

простоновая вещь, которую я нашел, даже без моих исходных файлов (только с файлами, сгенерированными Qt) все еще есть ошибка компиляции.похоже, что проблема с gcc, который у меня есть.

@ Troubadour Qt сгенерировал эту команду:

g++ -c -std=c++0x -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'd:/Qt/qt/include/QtCore' -I'd:/Qt/qt/include/QtGui' -I'd:/Qt/qt/include' -I'd:/Qt/qt/include/ActiveQt' -I'debug' -I'.' -I'../TranslatorUI' -I'.' -I'd:/Qt/qt/mkspecs/win32-g++' -o debug/ttArray.o ../TranslatorBase/ttArray.cpp

Ответы [ 2 ]

11 голосов
/ 26 июля 2011

, как предложил Трубадур, проблема с mingw заключается в том, что когда вы добавляете флаг -std = c ++ 0x для параметров компиляции, mingw также автоматически добавляет флаг -ansi, чтобы исправить это, я добавил флаг -U__STRICT_ANSI__ для параметров компиляции. , проблема исправлена.

5 голосов
/ 23 апреля 2012

Я встретил ту же проблему.Изменение -std=c++0x на -std=gnu++0x также исправит это.

...