【发布时间】:2011-10-05 16:44:11
【问题描述】:
到目前为止,我已经在 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
【问题讨论】:
-
gcc生成命令是qmake生成的? -
请注意,this question 讨论了相同的问题,因此它可能会有一些用处。尽管您没有明确地拥有
-ansi选项,但您可能看到的是完全相同的东西,所以可能没有。 -
如果你在命令行中使用
g++而不是gcc,它仍然有效吗? -
@Troubadour:这里似乎有同样的问题,似乎当您要求编译器使用 c++0x std 选项进行编译时,它也认为编译仅限于 ansi。所以我只是按照this answer 中的建议做了。但我不知道它是否会破坏其他任何东西。