如何从代码块中的.cpp文件创建.exe?

时间:2011-12-09 18:37:44

标签: c++ codeblocks

我刚刚开始学习C ++,并显示我找到的代码this method的输出。这在我第一次编译Programme.cpp的结构时起了作用:

#include <iostream>

using namespace std;

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

它给了我一个.exe,我打开,跑了,得到了一个可爱的'Hello World!'出现,但当我尝试编译第二个时,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了。创建的唯一文件是Programme.o和Variables.o的结构(在子目录obj \ Debug中)。

我能找到的唯一问题似乎是this,但问题似乎略有不同,我尝试删除其中一个文件(因此只有一个Programme.cpp的结构或文件夹中的Variables.cpp和我仍然有相同的结果。

此外,这两个文件都没有编译器错误,我认为我没有更改程序结构中的代码块中的任何选项以及所有不起作用的内容。

谢谢,

Dalkius

编辑:构建日志:

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

4 个答案:

答案 0 :(得分:5)

从查看更新的构建日志开始,似乎没有执行链接步骤来生成最终的可执行文件。有几件事你可以检查,并尝试一些想法:

  • 确保链接器可执行文件和正确的路径已设置,以便C :: B可以找到它。对于MinGW,通过名为“g ++。exe”的编译器驱动程序调用链接器。
  • 检查“类型”下是否选择了“控制台应用程序”。
  • 如果一切正常但仍然没有链接,请尝试创建一个新的空白控制台项目。将现有文件添加到该项目并尝试构建它。
  • 尝试从'cmd'命令提示符手动构建它,以确保工具链本身正常运行。你应该在你的mingw安装下找到一个'mingwvars.bat'脚本。运行该脚本以打开正确的命令行环境。使用以下命令进行简单的测试编译:
  

cd“D:\ My Documents \ 0HOME \ Programming \ C ++ \ Code Blocks \ cplusplus.com Tutorial”
  g ++。exe -Wall -g Variables.cpp -o Variables.exe

最后,这是您的日志在正确构建时应该看起来的样子: C::B build log

答案 1 :(得分:2)

每次运行代码时,都会生成EXE文件。尝试查找已安装或复制C ++程序文件的程序的exe文件。

答案 2 :(得分:1)

我对代码块不太熟悉,但我会尝试通过解释编译器正在做什么来帮助。它创建的那些.o文件称为对象文件。高级编译的工作原理如下:

1)您的源代码由编译器编译。

2)编译器将解释您的代码并为您拥有的每个文件创建一个对象(或.o文件)(通常无论如何)。

3)然后,这些文件在称为“链接器”的编译过程中被“链接”在一起。

4)最后,链接器输出你的.exe文件。

当然还有更多内容(例如库文件,预编译的dll,预处理等),但出于您的目的,您可以像刚开始时一样考虑它。

我的猜测是你可能不小心用codeblocks链接器修改了某些东西,或者它正在找错链接文件的位置 - 甚至连接器都会抛出错误(尽管大多数IDE会告诉你这个)。不幸的是,我很遗憾对代码块不太熟悉。

如果代码块中有任何方法可以触发“干净”,您也应该尝试并尝试重建。这将删除(清理)上次构建时可能仍然存在的任何旧文件。

答案 3 :(得分:0)

构建程序后,在构建日志中,您可以看到“正在执行:”,您可以在其中找到程序刚刚创建的.exe文件的路径。