C ++ .exe停止工作

时间:2013-03-12 19:27:16

标签: c++

我在使用c ++时非常困难。 我创建了一个hello world,编译成了YouTube.exe和main.o. 我运行该程序并打印hello world,但随后说YouTube.exe已停止工作。 即使我将main.o移动到另一个目录,YouTube.exe仍会打印hello world并停止工作! 所以我有两个问题: 1.当main.o被删除时,为什么程序仍会打印hello world? 2.为什么程序停止工作?这是代码:

main.cpp:

#include<iostream>

using namespace std;

int main(){

    int a;
    cout << "Hello World!";
    cin >> a; //to make the program pause

    return 0;
}

1 个答案:

答案 0 :(得分:2)

因为.o文件是包含程序的object file,但它仍然要链接并重新定位到真正的可执行二进制文件。

这意味着YouTube.exe已经包含main.o内的内容,但是采用可执行格式。

实际发生的是编译器生成 .o 文件(自己编译的每个目标文件),然后链接器将所有 .o 文件链接在一起,解决任何问题依赖并重新定位生成真正的 .exe 文件所需的内容。