1

我有一个简单的程序,我完全从http://www.learncpp.com/cpp-tutorial/19-header-files/中的示例复制了它,因为我正在学习如何使用多个文件制作 c++ 程序。

该程序可以编译,但是在构建时,会出现以下错误:

/tmp/ccm92rdR.o:在 main 函数中:main.cpp:(.text+0x1a):未定义对“add(int, int)”的引用 collect2:ld 返回 1 个退出状态

这是代码:

主文件

#include <iostream>
#include "add.h" // this brings in the declaration for add()

int main()
{
    using namespace std;
    cout << "The sum of 3 and 4 is " << add(3, 4) << endl;
    return 0;
}

添加.h

#ifndef ADD_H
#define ADD_H

int add(int x, int y); // function prototype for add.h

#endif

添加.cpp

int add(int x, int y)
{
    return x + y;
}

有谁知道为什么会这样?

非常感谢你。

4

2 回答 2

5

代码几乎是完美的。

#include "add.h"在 中添加一行add.cpp

将文件一起编译为g++ main.cpp add.cpp,它将生成一个可执行文件a.out

您可以运行可执行文件./a.out,它将产生输出“3 和 4 的总和为 7”(不带引号)

于 2013-04-04T03:03:14.163 回答
0

当有许多 .c 或 .cpp 源并且其中一些未编译时,可能会发生未定义的引用。

关于如何做到这一点的一个很好的“逐步”解释是here

于 2013-04-08T11:44:34.190 回答