4

c Sharp プロジェクト ファイルの obj フォルダーに x86 フォルダーが存在するのはなぜですか?

私のプロジェクトファイル構造は

ProjectOne
----------ビン
--------------デバッグ
--------------リリース
-------- --Obj
--------------x86 //これはなぜですか?
-------------------Debug
-------------------Release
----- 私のソースファイル。

ファイルの現在のディレクトリが projectOne (ソース ファイルが存在する場所) ではなく、bin\debug であるのはなぜですか?

4

4 に答える 4

6

実行時、現在のディレクトリはデフォルトで実行可能ファイルがある場所に設定されます。これは bin/debug ディレクトリになります。

ただし、Visual Studio で起動するときにどこから実行するかを設定できます (プロジェクトのプロパティで、詳細が必要な場合は、使用している VS のバージョン/エディションを正確に指定してください)。

ディレクトリの内容については、objディレクトリ全体をほとんど無視できます。Visual Studio がビルドしてから使用する中間ファイルでいっぱいですが、そこからファイルを直接使用する必要はほとんどありません。

于 2010-12-06T07:24:19.610 に答える
1

x86フォルダーは、ビルド構成マネージャーでのビルドのターゲット プラットフォームを参照します。これにより、64 ビット OS 上で 32 ビット アプリケーションを構築できます。Cody と Jon が言うように、objディレクトリは無視できます。

于 2010-12-06T07:33:46.580 に答える
0

このbinフォルダーには、アプリケーションのバイナリ ファイル (つまり、実行可能ファイル) が含まれています。2 つ (またはそれ以上) のフォルダー (通常はDebugRelease. これらはビルド構成に対応しています。プロジェクトがコンパイルされると、実行したビルドの種類に応じて、実行可能ファイルがこれらのフォルダーのいずれかに配置されます。開発環境の外で実行可能ファイルを実行する場合は、これらのフォルダーのいずれかにある「.exe」ファイルをクリックします。

必要に応じて、プロジェクトの [プロパティ] ウィンドウを使用して、コンパイル中に Visual Studio が実行可能ファイルを出力する場所を変更できます。

このobjディレクトリには、アプリケーションのコンパイル時に Visual Studio がビルドする中間 (またはオブジェクト) ファイルが含まれています。これは、実際に心配したり、ファイルを使用したりする必要があるものではありません。

最後に、ソリューション エクスプローラー ウィンドウに表示されるように、ソース ファイルはルート ディレクトリに保持されます。これらのファイルの場所は自分で管理します。Visual Studio では管理されません。

于 2010-12-06T07:25:34.537 に答える
0

オブジェクト ファイル (Obj に格納されているファイル) は、リンクされていないコンパイル済みのバイナリ ファイルです。これは、後で結合して実行可能ファイルを作成する最終的な実行可能ファイルのフラグメントと考えてください。

ソース コードをコンパイルすると、各ソース ファイルは大まかに 1 つのオブジェクト ファイルにコンパイルされます。なんで?理由はありません*、特定のコンパイラがどのように作成されたかだけです。これを行わず、代わりにすべてを 1 つのステップで 1 つの大きなバイナリにコンパイルする他の言語のコンパイラがあります。しかし、あなたのコンパイラを書いた人々は、最初に別々のオブジェクト ファイルにコンパイルすることに決めました。

ここで、各ソース ファイルが 1 つのオブジェクト ファイルを生成する場合、コードをコンパイルするたびにソース ディレクトリが乱雑になり、大量の .obj ファイルでいっぱいになることを想像できます (実際、多くの C コンパイラは伝統的にこれを行っていました)。時間が経つにつれて、大規模なプロジェクトに取り組んでいる開発者は、コンパイル スクリプトを記述したり、プロジェクトを構成してすべての .obj ファイルを 1 つのディレクトリに集めたりして、ソース ディレクトリが乱雑にならないようにするようになりました。

あなたのコンパイラを書いた人々は、別の Obj ディレクトリのアイデアを明らかに気に入ったので、それをプロジェクトのデフォルト構成にしました。x86 サブディレクトリがある理由については、コンパイラが ARM (Android、Win Phone 7、iPhone 用) などの他の CPU もサポートし、32 ビットと 64 ビットを区別するためです。


* 注: 実際には、コンパイラ コードをよりモジュール化し、インクリメンタル コンパイルをサポートするなど、これを行うにはいくつかの非常に正当な理由がありますが、個別の obj ファイルを生成せずにすべてのことを実行できる人もいるという事実は、ほとんどが開発者による設計上の決定であることを意味します。必要以上にコンパイラの開発者。

于 2010-12-06T07:34:06.050 に答える