У меня есть простая программа, которую я скопировал именно из примера в 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;
}
Кто-нибудь знает, почему это происходит?
Большое спасибо.
Код почти идеален.
Добавить строку #include "add.h" in
add.cpp`.
Скомпилируйте файлы вместе как g++ main.cpp add.cpp
и он будет производить исполняемый файлa.out
Вы можете запустить исполняемый файл как ./a.out
и он выдаст вывод «Сумма 3 и 4 равна 7» (без кавычек)
Неопределенные ссылки могут возникать при наличии большого количества источников .c или .cpp, и некоторые из них не компилируются.
Одно хорошее «пошаговое» объяснение о том, как это сделать, Вот