我试图使用g ++编译器生成.exe文件。我没有成功地试过多种方法。
1) QString program = "C:/Strawberry/c/bin/g++";
QStringList arguments;
arguments << "g++ -o dialog C:/Documents/ED30/dialog.cpp";
QProcess process;
process.start(program, arguments);
process.waitForFinished(-1);
2) QProcess::execute("g++ -o dialog2 C:/Documents/ED30/dialog.cpp");
3) QProcess::execute("g++ C:/Documents/ED30/dialog.cpp -o dialog2");
每次我都有相同的错误消息:
&#34;在C:/Documents/ED30/dialog.cpp中包含的文件中:1:0: C:/Documents/ED30/dialog.h:4:19:致命错误:QDialog:没有这样的文件或目录 编译终止。&#34;
或者有时没有任何事情发生。
我在Windows 8.1上使用Qt 5.7和MinGW
编辑: 所以在与成员讨论问题后,我做了一些进展。 到目前为止最好的代码是:
system("g++ -o dialog2 -I C:/Qt/5.8/mingw53_32/include -I C:/Qt/5.8/mingw53_32/include/QtGui -I C:/Qt/5.8/mingw53_32/include/QtCore -I C:/Qt/5.8/mingw53_32/include/QtWidgets -L C:/Qt/5.8/mingw53_32/lib C:/Documents/ED30/dialog.cpp");
但这告诉我MinGW不是c ++ 11编译器,它建议我写&#34; -std = c ++ 11或-std = gnu ++ 11&#34;在命令行中以更新编译器。在编译器中输入后,出现以下错误:&#34; Unknow command&#34;。 我尝试使用Qt 5.7和5.8但没有成功。 一个解决方案呢?
答案 0 :(得分:0)
您尝试编译dialog.cpp
的代码似乎使用了Qt(特别是QDialog)。
运行g++ -o dialog2 C:/Documents/ED30/dialog.cpp
时,g ++失败,因为它无法找到Qt头文件和库文件的位置。
使其工作的最小命令行是:
g++ -o dialog2 -I<PathToQtheaders> -L<PathToQtLibraries> -lQt5Core -lQt5Gui -lQt5Widgets C:/Documents/ED30/dialog.cpp
您可能需要根据代码需要添加一些额外的库。请注意,如果您只是编译它(不调用moc
等),就不能使用Q_OBJECT宏。
提示:查看qmake
在标准Qt项目上生成的命令。
额外提示:您可以使用QLibraryInfo::location()
获取Qt安装路径。
你的第一个例子应该是:
QString program = "C:/Strawberry/c/bin/g++";
QStringList arguments;
arguments << "-o" << "dialog" << "C:/Documents/ED30/dialog.cpp";
QProcess process = "g++";
process.start(program, arguments);
process.waitForFinished(-1);
答案 1 :(得分:-1)
我认为你错过了Qt标题的include目录。
QProcess :: execute(&#34; g ++ -o dialog -I C:\ QtDir C:/Documents/ED30/dialog.cpp");
QtDir是系统上Qt标头的实际位置,如C:\ Qt \ include
您可能也无法链接。整个命令是:
QProcess :: execute(&#34; g ++ -o dialog -IC:\ QtDir \ include -LC:\ Qtdir \ lib -l Qt C:/Documents/ED30/dialog.cpp")