Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dima-dima
1 / 1 / 0
Регистрация: 27.11.2012
Сообщений: 128
#1

Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) - C++

30.07.2014, 23:02. Просмотров 799. Ответов 10
Метки нет (Все метки)

Столкнулся с проблемой, сам не ожидал.
Вот три файла
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream.h>
#include <conio.h>
#include "menu.h"
 
int main(){
clrscr();
int y;
cin>>y;
cout<<f(y);
return 0;
}
menu.cpp
C++
1
2
3
4
#include "menu.h"
int f(int n){
    return n+5;
}
menu.h
C++
1
2
3
4
#ifndef _MENU_H
#define _MENU_H
int f(int n);
#endif
Написано в Turbo C++
Жму ctrl+F9
На этапе Linging main.exe появляется ошибка
Linker error Undefined symbol f(int) in module main.cpp
Почему так, где я допустил ошибку. Подскажите, пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2014, 23:12     Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) #2
Цитата Сообщение от dima-dima Посмотреть сообщение
Почему так
Линкер не видит реализацию функции (файл menu.cpp).
dima-dima
1 / 1 / 0
Регистрация: 27.11.2012
Сообщений: 128
30.07.2014, 23:14  [ТС]     Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) #3
А почему не видит, как это исправить?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2014, 23:15     Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) #4
Цитата Сообщение от dima-dima Посмотреть сообщение
А почему не видит, как это исправить?
Если бы это был не Turbo C++, то я сказал бы: нужно добавить файл menu.cpp в проект.
dima-dima
1 / 1 / 0
Регистрация: 27.11.2012
Сообщений: 128
30.07.2014, 23:17  [ТС]     Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) #5
А в какое среде можно было бы применить вашу рекомендацию.
Тем не менее, такая структура проекта как у меня должна работать в теории. Не понимаю, почему она не работает.
rikimaru2013
C++ Game Dev
2399 / 1093 / 237
Регистрация: 30.11.2013
Сообщений: 3,620
30.07.2014, 23:17     Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) #6
Попробуй оставить в заголовке только
C++
1
int f(int n);
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2014, 23:24     Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) #7
Цитата Сообщение от dima-dima Посмотреть сообщение
А в какое среде можно было бы применить вашу рекомендацию.
В разных. В студии, code blocks, dev c++...
Цитата Сообщение от dima-dima Посмотреть сообщение
Тем не менее, такая структура проекта как у меня должна работать в теории. Не понимаю, почему она не работает.
Совершенно не знаю, что это за среда: Turbo C++, поэтому ничего не могу сказать.

Добавлено через 2 минуты
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Попробуй оставить в заголовке только
С заголовком там, по-моему, всё нормально, иначе до линкера бы не дошло.
dima-dima
1 / 1 / 0
Регистрация: 27.11.2012
Сообщений: 128
30.07.2014, 23:25  [ТС]     Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) #8
Вообще помогло вставить в main.cpp
C++
1
#include "menu.cpp"
Уж не знаю, насколько это верно и не появится ли проблем потом.
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,411
Записей в блоге: 3
01.08.2014, 12:26     Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) #9
Цитата Сообщение от dima-dima Посмотреть сообщение
#ifndef _MENU_H
#define _MENU_H
int f(int n);
#endif
C++
1
2
3
4
#ifndef _MENU_H
#define _MENU_H
extern int f(int n);
#endif
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
01.08.2014, 15:14     Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) #10
Цитата Сообщение от dima-dima Посмотреть сообщение
Уж не знаю, насколько это верно и не появится ли проблем потом.
То, что это работает не значит, что это верно. Изначальный вариант был правильный. Чтобы он работал, нужно по нормальному создать проект. Чтобы это сделать по нормальному нужно выкинуть Турбо си нафиг. По-хорошему, это нужно было сделать изначально, вне зависимости от того, будешь ты пользоваться проектами или нет.

Добавлено через 1 минуту
Цитата Сообщение от HighPredator Посмотреть сообщение
extern int f(int n);
разве extern обязательно применять к функциям?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2014, 15:40     Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module)
Еще ссылки по теме:
Выдает ошибку( undefined symbol display() in module, как исправить? C++
C++ [Linker Error] Unresolved external 'Sort(int, int)' referenced from H:\INFORMATIC\5\UNIT1.OBJ
[Linker Error] undefined reference to C++
C++ [Linker error] undefined reference to
C++ [Linker error] undefined reference to 'r'

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,411
Записей в блоге: 3
01.08.2014, 15:40     Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) #11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
разве extern обязательно применять к функциям?
Вообще нет, но исходя из фактов:
а) тс имеет дело с архаичным турбо цпп
б) фиг его знает как там настроен линкер
имхо имеет смысл ему сказать чтобы точно искал реализацию в другой единице трансляции.
Yandex
Объявления
01.08.2014, 15:40     Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru