编译包含多个文件的程序
Compiling a program with multiple files
我刚开始学习C++,将Dev C++作为我的IDE。我正在使用的一个教程中有一个关于编译由多个文件组成的程序的页面。在这一点上,这很简单,我有一个包含函数的文件,另一个文件包含调用函数并输出结果所需的所有其他代码。问题是教程没有告诉我如何连接这些文件,以便我可以编译程序并使其工作。似乎有多种方法可以做到这一点,我都想要它们,但我现在主要寻找最简单的一种。
我还应该提到我是新手,所以请尽量保持您的解释简单易懂。
通常,您会将两个.cpp
文件添加到同一目标下的项目中。它会自动将这两个文件添加到构建中并将它们链接在一起。
也就是说,Dev-C++非常非常古老且无人维护。它已经好几年没有更新了。我强烈建议您使用不同的 IDE。有很多可供选择,包括一个名为wxDev-C++的Dev-C++分支。我实际上会推荐Code::Blocks或Visual Studio Express,它们都更加现代,并且对调试和许多其他功能有更好的支持。
我不确定 Dev-C++,但概念保持不变。因此,这是您可以尝试让两个文件协同工作的方法
- 每个C++文件都是一个编译单元 - 这意味着编译器将分别将一个.cpp/.cxx文件转换为一个.obj/.o文件(在Windows和Linux(或任何Unix)上)
- obj文件,称为目标文件,包含该特定文件中存在的类和函数的机器代码(我在这里跳过一些内部细节)
- 如果要访问不同编译单元中的函数,则需要链接这两个目标文件
- 链接
- 是一个术语,用于链接两个目标文件
- 有一个单独的进程(编译器除外)执行目标文件的链接
- 因此,在您的情况下,您需要使用 dev-c++ 编译器并创建单独的目标文件
- 然后使用链接器链接两个目标文件以创建最终可执行文件
如果要引用的.cpp文件中存在函数,请使用头文件。头文件包含函数/类声明。.cpp文件将具有实现。因此,在您的一个.cpp文件(例如)A.cpp中,您包含标头 B.hpp 并使用 B.hpp 文件中的函数。包含标头将告诉编译器函数声明存在于其他位置,并且链接器将负责将所有这些引用串在一起以创建最终可执行文件。
希望这有帮助,否则,请不要犹豫,提及您正在使用的文件,我可以建议如何将两个.cpp文件链接在一起。
必须使用 #include 预处理器指令包含其他文件在文件顶部,您有 main() 函数
例如:
#include "filename.h"
...
/* rest of code containing main function goes here */
...
#include "path/filename.c"
main
{
...
...
...
}
- make 命令创建 .file,但不创建应用程序文件
- C++对象文件和程序文件组合编译的 Bashrc 别名
- 程序文件中的安装路径:一些问题
- 词频程序 - 文件输入太大?
- 使用带有 MEX 包装器的帮助程序 C 文件从 MATLAB 2016 调用C++代码时出现问题
- 如何修复"无法打开包含文件'boost/config.hpp':没有这样的文件或目录(包括目录涵盖:C:\程序文件\boost\boost_1_67_0)
- MacOS应用程序文件关联
- Visual Studio - C++ - 以 32 位或 64 位构建和运行应用程序 - 从适当的程序文件目录加载 D
- Windows 8 应用商店应用程序C++文件访问
- 检索C++程序/文件中使用的指针变量列表
- Visual Studio使用多线程DLL发布应用程序文件
- 为什么不将.cpp转换为c程序文件呢
- C++获取程序文件目录,附加额外路径并执行
- C++创建程序文件中文件的进程
- 在应用程序文件夹中安装 C/C++ 库"IGRAPH"
- 使用 Dev-C++ 5.2.0.2 进行调试 - 调试时找不到程序文件 gdb.exe
- 创建无需任何外部执行即可连续侦听的守护程序文件
- Qt单一应用程序文件已打开
- 问题.所有功能都可以在发布文件夹中工作,但不能在程序文件中工作
- 应用程序文件没有在不同的mac上运行