如何在Code Blocks中从.cpp文件创建.exe文件?

6
我刚开始学习C++,为了显示代码输出,我找到了这种方法。当我第一次编译“程序结构.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文件,因此无法打开它。我尝试重新编译Structure of a Programme.cpp(在删除所有相关文件后),但现在它也不会再创建.exe文件了。唯一创建的文件是Structure of a Programme.o和Variables.o(在子目录obj\Debug中)。
我找到的唯一类似的问题是this,但问题似乎略有不同,我尝试删除其中一个文件(因此文件夹中只有Structure of a Programme.cpp或Variables.cpp之一),但结果仍然相同。
另外,两个文件都没有编译器错误,并且我不认为我在Structure of a Programme正常工作和所有内容都无法工作之间更改了任何Code Blocks选项。
谢谢,
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

请帮助我们帮助您,将您获得的构建日志复制并粘贴到此问题中。 - greatwolf
1
你能打开完整的编译器日志记录吗?你可以在“设置->编译器/调试->其他设置”选项卡下找到它。确保编译器日志记录设置为“完整命令行”。然后,在重新构建后,更新你的问题并附上在构建日志中显示的完整命令行。 - greatwolf
@Victor T. 我已经在选项更改后添加了构建日志。对我来说看起来并没有太大的区别,但我已经检查了所有关于命令行的选项(将构建日志保存为HTML -> 在生成的HTML中始终输出完整的命令行)。 - Dalkius
4个回答

7
从您更新的构建日志中可以看出,链接步骤未执行以生成最终可执行文件。有几件事情您可以检查并尝试一些想法:
  • 确保链接器可执行文件和正确路径已设置,以便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

谢谢,现在它可以工作了。我不确定是怎么做到的,但感谢你的帮助。 - Dalkius
@Dalkius 如果这个回答对你有帮助,你可以接受它。 - greatwolf

2

EXE文件通常在每次运行代码时构建。尝试找到您安装或复制C ++程序文件的程序的exe文件。


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

1

我对codeblocks不是很熟悉,但我会尝试通过解释编译器正在做什么来帮助您。它正在创建的那些.o文件称为对象文件。高级别的编译过程如下:

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

2)编译器将解释您的代码并为每个文件创建一个对象(或.o文件)(通常情况下)。

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

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

当然还有更多内容(例如库文件、预编译的dll、预处理等),但对于您的目的,您可以像上面那样考虑它,因为您刚开始学习。

我的猜测是,您可能意外修改了codeblocks链接器中的某些内容,或者它正在查找错误的位置以链接文件,甚至链接器正在抛出错误(尽管大多数IDE都会告知您)。再次很遗憾,我对codeblocks不太熟悉。

如果在codeblocks中有任何触发“清除”的方法,您也应该尝试并尝试重新构建。这将删除(清理)上次构建可能仍在那里的任何旧文件。


我已经尝试过清理,但没有任何改变。我还在构建选项下找到了一些关于链接器的东西,但那里没有我知道该怎么做的内容,而且我相当擅长不去碰那种东西。 - Dalkius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接