1

私はc ++で非常に苦労しています。YouTube.exe と main.o をコンパイルした hello world を作成しました。プログラムを実行すると、hello world が表示されますが、YouTube.exe が動作を停止したと表示されます。main.o を別のディレクトリに移動しても、YouTube.exe は依然として hello world を出力し、動作を停止します。2 つの質問があります。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 に答える