无法识别的命令行选项'-WI'

时间:2014-03-09 13:36:35

标签: c++ qt mingw

我正在尝试为大学设置我的Qt而且我遇到了一些问题。我正在运行Windows 8,我不确定哪个版本的Qt或QtCreator而不是最新版本 - 我们获得了版本安装程序所以我们必须使用这个版本,尽管我在QtCreator设置之前自己安装了最新的MinGW。

我在QtCreator中尝试了一些演示代码,当我尝试运行以下代码时,我收到错误“无法识别的命令行选项”-WI“。

#include <QtCore/QCoreApplication>
#include <QtGui/QMessageBox>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QMessageBox msgBox;
    msgBox.setText("This is some text.");
    msgBox.exec();


    return a.exec();
}

我需要做我的任务,当我收到所有这些奇怪的错误时,我不确定如何做到这一点。 任何帮助将不胜感激。

提前致谢!

*编辑*

这是我在构建过程中可以在QtCreator中找到的错误输出。

Running build steps for project TestProject...
Configuration unchanged, skipping qmake step.
Starting: "C:/MinGW/bin/mingw32-make.exe" -w 
mingw32-make: Entering directory 'C:/Users/Nick/Documents/Qt Projects/TestProject-build-desktop' 
C:/MinGW/bin/mingw32-make -f Makefile.Debug 
mingw32-make[1]: Entering directory 'C:/Users/Nick/Documents/Qt Projects/TestProject-build-desktop' 
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,console -mthreads -Wl -o debug\TestProject.exe debug/main.o -L"c:\Qt\2010.04\qt\lib" -lQtCored4 
Makefile.Debug:73: recipe for target 'debug\TestProject.exe' failed 
mingw32-make[1]: Leaving directory 'C:/Users/Nick/Documents/Qt Projects/TestProject-build-desktop' 
Makefile:34: recipe for target 'debug' failed 
mingw32-make: Leaving directory 'C:/Users/Nick/Documents/Qt Projects/TestProject-build-desktop' 
g++: error: unrecognized command line option '-Wl' 
mingw32-make[1]: *** [debug\TestProject.exe] Error 1 
mingw32-make: *** [debug] Error 2 
The process "C:/MinGW/bin/mingw32-make.exe" exited with code %2.
Error while building project TestProject (target: Desktop)
When executing build step 'Make'

以下是QtCreator生成的.pro文件的内容:

QT       += core

QT       -= gui

TARGET = TestProject
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

2 个答案:

答案 0 :(得分:4)

问题很明显:

  

g ++ -enable-stdcall-fixup -Wl,-enable-auto-import   -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,console -mthreads -Wl -o debug \ TestProject.exe debug / main.o -L“c:\ Qt \ 2010.04 \ qt \ lib“-lQtCored4

我不确定exaclty是如何编译的,但对我而言,它看起来像是-Wl${somestuff}的makefile,并且由于某种原因${somestuff}未定义。要么是这样,要么在链接命令的commendline中存在虚假-Wl,但这似乎不太可能。

答案 1 :(得分:4)

正如Mats所说,问题是命令行中的额外-Wl

这是由于QT配置文件中的错误,谢天谢地,这可以“永久”(本地)修复。

您需要编辑这些文件中的一个(可能是两个)(通常在C:\Qt\2010.02\qt\mkspecs中):

  • mkspecs\default\qmake.conf
  • mkspecs\win32-g++\qmake.conf

改变这个:

QMAKE_LFLAGS        = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads -Wl

到此:

QMAKE_LFLAGS        = -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads

因为第一行开头的-Wl,错误地位于第二行的末尾。

完成此编辑后,如果清理然后重建项目,则不会再看到错误。

注意:

  • 同样的错误也导致了this issue,所以感谢leemes回答他们的问题)
  • 自版本4.7以来它是fixed in Qt我相信