компоновщик — & quot; неопределенная ссылка & quot; ошибка в очень простой программе на С ++

У меня есть простая программа, которую я скопировал именно из примера в http://www.learncpp.com/cpp-tutorial/19-header-files/ потому что я учусь делать программы на с ++ с несколькими файлами.

Программа компилируется, но при сборке появляется следующая ошибка:

/tmp/ccm92rdR.o: В функции main:
main.cpp :(. text + 0x1a): неопределенная ссылка на `add (int, int) ‘
collect2: ld вернул 1 статус выхода

Вот код:

main.cpp

#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;
}

add.h

#ifndef ADD_H
#define ADD_H

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

#endif

add.cpp

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

Кто-нибудь знает, почему это происходит?

Большое спасибо.

1

Решение

Код почти идеален.

Добавить строку #include "add.h" inadd.cpp`.

Скомпилируйте файлы вместе как g++ main.cpp add.cpp и он будет производить исполняемый файлa.out

Вы можете запустить исполняемый файл как ./a.out и он выдаст вывод «Сумма 3 и 4 равна 7» (без кавычек)

4

Другие решения

Неопределенные ссылки могут возникать при наличии большого количества источников .c или .cpp, и некоторые из них не компилируются.

Одно хорошее «пошаговое» объяснение о том, как это сделать, Вот

0

По вопросам рекламы [email protected]