1

我在使用 c++ 时遇到了非常困难的时期。我制作了一个 hello world,它已经编译为制作 YouTube.exe 和 main.o。我运行该程序,它打印出 hello world,但随后说 YouTube.exe 已停止工作。即使我将 main.o 移动到不同的目录,YouTube.exe 仍然会打印 hello world 并停止工作!所以我有2个问题: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;
}
4

1 回答 1

2

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

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

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

于 2013-03-12T19:29:49.587 回答