@lexzus07

Компиляция кода C++. Какую опцию указать?

Доброго времени суток!
При описании логики элемент-функций класса в другом файле с расширеним .cpp , компилятор выдает сообщение.

main.cpp:(.text+0xa1): undefined reference to `Students::sentName(std::string)'
main.cpp:(.text+0xd0): undefined reference to `Students::sentLName(std::string)'
main.cpp:(.text+0x162): undefined reference to `Students::sentNums(int*)'
main.cpp:(.text+0x182): undefined reference to `Students::sentBall(float)'
main.cpp:(.text+0x194): undefined reference to `Students::getName()'
main.cpp:(.text+0x1e7): undefined reference to `Students::getLName()'
main.cpp:(.text+0x233): undefined reference to `Students::getBall()'
collect2: error: ld returned 1 exit status

Говорят, нужно указать опцию.
Как я понимаю , компилятор пишет что нет ссылок.
Используюю GCC g++.
Кто знает выход из ситуации, помогите.
Заранее благодарен
  • Вопрос задан
  • 351 просмотр
Решения вопроса 1
gbg
@gbg Куратор тега Linux
Любые ответы на любые вопросы
Формально, вы позабыли сказать компилятору, что у вас не один cpp, а два. Компоновщик не находит тела методов, вот и ругается.

Вы можете просто перечислить все ваши файлы компилятору в командной строке.

Лучше, вам надо использовать систему сборки. Makefile там, вот это вот все.

Фактически, вам следует начать наконец использовать ide. ide все это делает автоматически.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dponyatov
Полный текст командной строки запуска компилятора есть?

В простейшем случае это что-то похожее на
g++ $(CXXFLAGS) -o program$(EXE) main.cpp module1.cp module2.cpp


Но в вашем случае если проект собирается из нескольких файлов через IDE, это может оказаться какой-то более сложной проблемой, например ошибкой линкера в обработке имен функций/метдов, измененных манглером
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы