【发布时间】:2013-12-31 02:11:00
【问题描述】:
我有以下 cpp 文件:
#include <iostream>
#include <stdlib.h>
#include <cstdlib>
using namespace std;
int main(int,char*[])
{
int b = std::system("dot -Tdot ./a.dot -o ./a3.dot");
cout << "ret: " << b << endl;
return 0;
}
从 cmd 运行:
g++ -O2 -Wall -pedantic -pthread q2.cpp -lboost_graph && ./a.out
创建a3.dot 运行良好
用qtcreator 运行同一个文件我得到:
Segmentation fault (core dumped)
ret: 35584
这是来自Qt的编译器输出
make: Entering directory `/home/studnet/QtProjects/T2-build-desktop-Qt_4_8_1_in_PATH__System__Release'
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_NO_DEBUG -DQT_DECLARATIVE_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../T2 -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtDeclarative -I/usr/include/qt4 -I../T2/qmlapplicationviewer -I. -I../T2 -I. -o main.o ../T2/main.cpp
g++ -Wl,-O1 -o T2 main.o qmlapplicationviewer.o moc_qmlapplicationviewer.o -L/usr/lib/i386-linux-gnu -lQtDeclarative -lQtGui -lQtCore -lpthread
我尝试在 Qt 中调试它,但我对它相当陌生,并获得了一个程序集窗口。我把a.out放在qt通常读取文件的build文件夹和源文件夹中以防万一。
有什么建议可以解决这个问题吗?
谢谢。
编辑:
我试过了:
QProcess process;
process.start("dot", QStringList() << "-Tdot ./a.dot -o ./a3.dot");
process.waitForFinished(-1);
然后我没有得到文件。
【问题讨论】:
-
Running the same file with Qt I get:-> “用Qt运行”是什么意思? -
@LaszloPapp 查看更新。
-
还是不够。你的项目文件是什么?您使用的是命令行、qtcreator 还是 cmake?请提供更多信息。
-
每次有人说“系统调用”我都会很兴奋。直到我打开问题。
-
@LaszloPapp qtcreator 我认为使用 qmake
标签: c++ qt segmentation-fault system-calls qtcore