web-dev-qa-db-ja.com

コードブロックの.cppファイルから.exeを作成するにはどうすればよいですか?

私はC++の学習を始めたばかりで、見つけたコードの出力を表示するために このメソッド 。これは、Structure of aProgramme.cppを最初にコンパイルしたときに機能しました。

#include <iostream>

using namespace std;

int main ()
{
    cout << "Hello World!";
    return 0;
}

それは私に.exeを与え、それを開いて実行し、素敵な「HelloWorld!」を取得しました。表示されますが、2番目のVariables.cppをコンパイルしようとすると:

#include <iostream>
using namespace std;

int main ()
{
    int a, b;
    int result;

    a=5;
    b=2;
    a=a+1;
    result=a-b;

    cout << result;

    return 0;
}

.exeをまったく取得しなかったため、開く方法がわかりませんでした。 (関連するすべてのファイルを削除した後)Programme.cppの構造を再コンパイルしようとしましたが、今では.exeも作成されません。作成されるファイルは、Structure of a Programme.oとVariables.o(サブディレクトリobj\Debug内)のみです。

似ていると思われる唯一の質問は this でしたが、問題は少し異なっているようで、ファイルの1つを削除しようとしました(したがって、Programme.cppの構造またはフォルダー内のVariables.cpp)と私はまだ同じ結果を持っていました。

また、どちらのファイルにもコンパイラエラーはなく、プログラムの構造が機能している場合と機能していない場合のコードブロックのオプションを変更したとは思いません。

ありがとう、

ダルキウス

編集:ログの作成:

Compiling: Structure of a Programme.cpp
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings

Compiling: Variables.cpp
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings

編集2:「完全なコマンドライン」ビルドログ:

Build started on: 14-12-2011 at 07:57.39
Build ended on: 14-12-2011 at 08:01.03
-------------- Clean: Debug in cplusplus.com Tutorial ---------------
Done. 
mingw32-g++.exe -Wall -g -c "D:\My Documents\0HOME\Programming\C++\Code Blocks\cplusplus.com Tutorial\Structure of a Programme.cpp" -o "obj\Debug\Structure of a Programme.o"
Process terminated with status 0 (0 minutes, 1 seconds)
0 errors, 0 warnings
mingw32-g++.exe -Wall -g -c "D:\My Documents\0HOME\Programming\C++\Code Blocks\cplusplus.com Tutorial\Variables.cpp" -o obj\Debug\Variables.o
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings
5
Dalkius

更新されたビルドログを見ると、最終的な実行可能ファイルを生成するためのリンク手順が実行されていないようです。確認できることがいくつかあり、試してみるアイデアがいくつかあります。

  • C :: Bがリンカーを見つけられるように、リンカーの実行可能ファイルと適切なパスが設定されていることを確認してください。 MinGWの場合、リンカーは「g ++。exe」という名前のコンパイラドライバーを介して呼び出されます。 
  • 「タイプ」で「コンソールアプリケーション」が選択されていることを確認します。 
  • すべてが正常に見えるが、それでもリンクされない場合は、新しい空白を作成してみてくださいconsoleプロジェクト。そのプロジェクトに既存のファイルを追加して、ビルドしてみてください。
  • 'cmd'コマンドプロンプトから手動でビルドして、ツールチェーン自体が機能していることを確認してください。 mingwインストールの下に「mingwvars.bat」スクリプトがあります。そのスクリプトを実行して、適切なコマンドライン環境を開きます。次のコマンドを使用して、簡単なテストコンパイルを実行します。

cd "D:\ My Documents\0HOME\Programming\C++\Code Blocks\cplusplus.comチュートリアル"
g ++。exe-Wall -g Variables.cpp -o Variables.exe

最後に、これは、ログが正しく構築されている場合のログの概観です。 C::B build log

6
greatwolf

EXEファイルは、ほとんどの場合、コードを実行するたびにビルドされます。 C++プログラムファイルをインストールまたはコピーしたプログラムのexeファイルを見つけてみてください。

2
Farid-ur-Rahman

私はコードブロックにあまり精通していませんが、コンパイラーが何をしているのかを説明することで助けようとします。作成する.oファイルはオブジェクトファイルと呼ばれます。高レベルでのコンパイルは次のように機能します。

1)ソースコードはコンパイラによってコンパイルされます。

2)コンパイラはコードを解釈し、(一般的にはとにかく)ファイルごとにオブジェクト(または.oファイル)を作成します。

3)これらのファイルは、「リンカー」と呼ばれるコンパイルプロセスの一部で「リンク」されます。

4)最後に、リンカは.exeファイルを出力します。

もちろん、これにはさらに多くの機能があります(ライブラリファイル、コンパイル済みdll、前処理など)が、目的としては、始めたばかりの場合は上記のように考えることができます。

私の推測では、コードブロックリンカーを使用して誤って何かを変更したか、ファイルをリンクするために間違った場所を探しているか、リンカーでさえエラーをスローしている可能性があります(ほとんどのIDEはこれを通知します)。繰り返しになりますが、残念ながら私はコードブロックにあまり精通していません。

コードブロックに「クリーン」をトリガーする方法がある場合は、それも試して再構築を試みる必要があります。これにより、前回のビルドで残っている可能性のある古いファイルがすべて削除(クリーンアップ)されます。

1
Weaver

プログラムをビルドした後、ビルドログに「実行中:」が表示されます。ここには、プログラムが作成したばかりの.exeファイルのパスがあります。

0
Nawa