Qt Creator编译错误“:: swprintf和:: vswprintf尚未声明”

时间:2011-07-14 20:49:37

标签: c++ qt gcc c++11 mingw

到目前为止,我已经在visual studio中编写了所有代码,现在我需要添加一些UI,因此我将使用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 v4.7.0的Qt Creator v2.0.1并使用mingw / gcc v4.4.0

- 编辑 -

只是我发现的一件新事物,即使没有我的源文件(只有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 个答案:

答案 0 :(得分:11)

正如Troubadour所说,这是mingw的一个问题,当你为编译选项添加-std = c ++ 0x flag时,mingw也会自动添加-ansi标志,所以要修复我添加-U__STRICT_ANSI__标志到编译选项。问题已解决。

答案 1 :(得分:5)

我遇到了同样的问题。将-std=c++0x更改为-std=gnu++0x也可以解决问题。