目前为止,我已经在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 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
-ansi
选项,但可能是您看到了完全相同的情况,也可能不是。 - Troubadourg++
而不是gcc
,它还能正常工作吗? - Troubadour