【问题标题】:C++ Compiling ConfusionC++ 编译混乱
【发布时间】:2013-06-15 18:41:08
【问题描述】:

我最近开始通过 cplusplus.com 教程学习 c++。 虽然我想尝试编译一个简单的代码,但打印出“Hello World”; 它适用于 linux,但我必须通过控制台打开它才能工作,即使我将其设置为“可执行文件”,我也不能简单地双击它。 我真的不在乎,因为 Linux 什么时候这么容易了。但后来我想用 C++ 制作一个适用于 Windows 的应用程序,一个简单的 Hello World 控制台应用程序。 问题是,如果我编译一个文件,我必须通过 Windows 控制台访问它才能工作,但我不希望这样。

1- 如何让代码自动打开 CMD 并运行?

2- 我需要在 Windows 中单独编译代码吗? 或者我可以通过 G++ 编译器在 Linux 中编译它吗?

3- 请向我解释编译的基本思想以及如何使代码在控制台/终端中自动运行。

此致,RonnyM

【问题讨论】:

  • 哪个编译器,因为那里有很多?你是如何调用你的编译器的?请用这些答案编辑您的帖子。
  • 你可以在windows中用g++编译。如果它是简单的 c++(没有外部库)。搭建一个dev os(linux),不定时在windows上运行测试。
  • 需要单独编译,因为底层API和可执行格式不同。对于 Windows,双击控制台应用程序将打开一个控制台窗口,尽管它会在程序执行完毕后立即关闭,这在您要读取程序输出时不太方便 - 要么从 cmd 运行它,要么让程序等待在完成之前输入(例如getch())。
  • 问题 1:确实如此,但窗口立即关闭,因为您的程序立即退出。它创建的窗口不再存在。

标签: c++ compiler-construction terminal cmd console-application


【解决方案1】:

如果我正确理解您的问题,我可以回答您的一些问题。我想我可以评论你的问题,但我不知道如何,所以我在这里回答你。

  1. 有时人们会创建批处理文件来顺序执行一堆命令。

  2. 是的,你必须单独编译。 Windows下的可执行文件是PE(Portable Executable),是ELF(Executable Linkable Format),所以编译器在不同的OS下生成不同格式的可执行文件。链接库也有一些区别,不同的系统有不同的库,所以编译器知道要使用哪些。有时你可以转换不同格式的可执行文件,你可以谷歌“PE VS ELF”,你会得到很多关于这些的东西。

  3. 编译是将代码转换为二进制文件的过程,这些文件可以在您的硬件上执行。你是什​​么意思自动运行?你的意思是二进制文件是如何开始执行的?

【讨论】:

  • 谢谢,这真的很有帮助,但对于第 3 部分:我的意思是,如果我在我的 IDE 中启动一个控制台项目并编译它(在 Windows 中),它会自动打开控制台并运行我的代码,如果我双击编译好的EXE文件?
猜你喜欢
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
  • 2011-07-14
  • 2018-06-23
  • 2014-04-11
相关资源
最近更新 更多