我在linux上工作,我在我的第一个c ++项目中使用code :: blocks。 main.cpp:
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello World"<< endl;
return 0;
}
该项目已经构建并调试良好。它工作,但当我按照可执行文件的路径并从调试文件夹运行它时,应用程序不显示任何事情 问题是什么,解决方案是什么? (此问题仅适用于控制台应用程序)
答案 0 :(得分:1)
您可能来自MS-Windows背景。
在Windows中,当您双击控制台程序时,系统会自动创建一个控制台窗口,并将该程序的标准输入和输出流连接到该控制台。
在Linux中,没有“控制台程序”或“GUI程序”这样的东西。只有程序可以读取/写入标准流,执行GUI的程序,或同时执行这两个程序。
结论是你的程序最有可能完美地找到,并且int打印到它的标准输出......
这个标准输出导致什么?这将是另一个问题......但无论如何我都会尝试回答。它将继承父进程的标准输出,即“文件管理器”。如果碰巧从终端运行(不太可能),那么你会在那里看到输出。如果它是从桌面会话启动(可能),那么它取决于会话管理器首先对STDOUT做了什么。他们中的大多数将其重定向到主文件夹中的隐藏文件。您可以尝试运行$ grep "Hello World" ~/.*
并查看会发生什么。
如果要通过双击运行终端窗口,则应为该程序编写.desktop
条目(如Windows快捷方式)并设置Terminal=true
。也许您的“文件管理器”已经有了自动生成.desktop
文件的工具。
或者,您可以编写一个shell脚本来启动xterm
,gnome-terminal
,konsole
...以及您的程序。