Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/76: Рейтинг темы: голосов - 76, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
1

Linker Error: undefined symbol

19.11.2012, 18:33. Показов 14712. Ответов 43
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прога компилируется без ошибок, когда запускается, то появляется 10 ошибок. И все одного характера Linker Error: undefined symbol.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <graphics.h>
#include "tstud.h"
#include "action.h"
void Gl_Menu()
{
 clrscr();
 gotoxy(33,11); cout<<"1-vvod novih dannih";
 gotoxy(33,12); cout<<"2- prosmotr";
 gotoxy(33,13); cout<<"3- informatsiya o fakultete";
 gotoxy(33,14); cout<<"4 - informatsiya o gruppe";
 gotoxy(33,15); cout<<"ESC - vyhod";
}
void Menu_1()
{
  clrscr();
  gotoxy(33,11); cout<<"1 - c клавиатуры";
  gotoxy(33,12); cout<<"2 - из файла";
}
 
void main()
{
  char ch,ch1, *file_n;
  Action Act(20);
  TStud stud;
  do
  {
   clrscr();
   Gl_Menu();
   ch=getch();
   switch(ch)
   {
     case '1':
      Menu_1();
      ch1=getch();
      switch(ch1)
             {
        case '1':
          clrscr();
          cin>> stud;
              Act.Add(stud);
          break;
        case '2':
           clrscr(); cout<<"введите имя файла ";
          cin>>file_n;
          Act.FromFile(file_n);
           break;
      };
        break;
     case '2':
       clrscr();
       if(Act.GetN()>0) Act .ToScreen();
       break;
     case '3':
       clrscr(); 
       Act.Obrab_Fac();
       break;
     case '4':
       clrscr(); 
       Act.Obrab_Gr();
       break;
    };
  }while(ch!=27);
 if (Act.GetN()>0) 
      { Act.Sort_Spis();  Act.ToFile(); }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "tstud.h" // class's header file
 
// class constructor
istream& operator >> (istream& s, TStud & A)
{
 cout<<"введите шифр факультета: "; s>>A.Shifr_Fac;
 cout<<" введите название факультета: "; s>>A.Name_Fac;
 cout<<" введите шифр группы: "; s>>A.Shifr_Gr;
 cout<<" введите количество студентов в группе"; s>>A.kol_stud;
 cout<<" введите общее количество пропусков в группе"; s>>A.prop;
 cout<<" введите количество пропусков по уважительной причине"; s>>A.uv_prop;
 return s;
}
ostream& operator << (ostream& s, TStud& A)
{
 cout<<" шифр факультета: "; s<<setw(2)<<A.Shifr_Fac<<endl;
 cout<<" название факультета: "; s<<setw(3)<<A.Name_Fac<<endl;
 cout<<" шифр группы: "; s<<setw(5)<<A.Shifr_Gr<<endl;
 cout<<" количество студентов в группе: "; s<<A.kol_stud<<endl;
 cout<<" общее количество пропусков в группе: "; s<<A.prop<<endl;
 cout<<" количество пропусков по уважительной причине: "; s<<A.uv_prop<<endl;
 return s;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
class TStud 
{
  private:
    char Shifr_Fac[3], Name_Fac[4], Shifr_Gr[6];
    int kol_stud;
    int prop;
    int uv_prop;
  friend istream& operator >> (istream&, TStud&);
  friend ostream& operator << (ostream&, TStud&);
 public:
  friend class Action;
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
Action::Action(int nn)
{  n=0; mas=new TStud[nn]; }
//------------------------------------------------------------
Action::~Action()
{  delete [] mas; n=0; }
//------------------------------------------------------------
void Action::Add(TStud stud)
{  *(mas+n)= stud; n++; }
 //------------------------------------------------------------
void Action::ToFile()
{
  ofstream zap("Spisok.txt");
  if(!zap) 
  {
     cout<<"nevozmozno otkrit fale lkz zapisi.Nazmite lubyy klavishy...";
     getch();  exit(1);
  };
  zap<<n<<endl;
  for(int i=0; i<n; i++)  zap<<*(mas+i);
  zap.close();
  clrscr();
  cout<<"Ввод данных закончен "<<
   "("<<GetN()<<" zap)"<<" Nazmite lubyy klavishy..."; getch();
}
//------------------------------------------------------------
void Action::FromFile(char *fname)
{
  int nn; TStud stud;
  ifstream chten(fname, ios::in|ios::nocreate);
  if(!chten)
    {
    cout<<endl<<"невозможно открыть файл для чтения.Нажмите любую клавишу...";
    getch();  exit(1);
  }
  Clear();
  chten>>nn;
  for(int i=0; i<nn; i++)
  {
    chten>> stud;
    clrscr();cout<< stud; getch();
    Add(stud);
  };
  chten.close();
  clrscr();
  cout<<"Счет завершен. Нажмите любую клавишу..";
}
//------------------------------------------------------------
void Action::Obrab_Fac()
{
  char sh_fac[3];
  int stud=0, propusk=0;
  float  stud_propusk=0;
  TStud *ptr;
  cout<<" введите шифр факультета:";
  cin>> sh_fac;
  for(int i=0; i<n; i++)
  {
    ptr=(mas+i);
    if(strcmp(ptr->Shifr_Fac, sh_fac)==0)
    {
      stud+=ptr->kol_stud;
      propusk+=ptr->prop;
      stud_propusk+=(ptr->prop - ptr->uv_prop);
    }
   }
  if (stud!=0)
  {
   stud_propusk=float (stud_propusk/stud);
    clrscr();
    cout<<"  Информация по факультету "<<sh_fac<<": "<<endl;
    cout<<"  общее количество студентов : "<< stud<<endl;
    cout<<"  Общее количество пропущеных часов: "<< propusk<<endl;
    cout<<"  Среднее количество пропущеных часов на одного студента:
     "<< stud_propusk<<endl;
  }
  else cout<<"Такой факультет не найден"<<endl;
  getch();
}
//------------------------------------------------------------
void Action::Obrab_Gr()
{
  TStud *ptr; int max=0, imax=0;
  if(n>0)
  {
    for(int i=0; i<n; i++)
    {
      ptr=(mas+i);
      if (ptr->uv_prop>max)
      { imax=i; max=ptr->uv_prop; }
     }
   cout<<" Сведения о группе, имеющей макс. кол-во пропусков по ув. причине:"   <<endl;
  cout<<*(mas+imax);
  getch();
 }
}
//------------------------------------------------------------
void Action::Sort_Spis()
{
  TStud tmp, *ptr1, *ptr2;
  if(n>0)
  {
     L1:
     for(int i=0; i<n-1; i++)
     {  ptr1=(mas+i); ptr2=(mas+i+1);
     if (ptr2->prop> ptr1->prop)
      { tmp=*ptr2; *ptr2=*ptr1; *ptr1=tmp; goto L1; }
      }
   }
}
//------------------------------------------------------------
void Action::ToScreen()
{
  int i=0; char ch;
  do
  {
    clrscr();
    cout<<"--- " <<i+1<<"-ая запись из "<< GetN() <<" ----"<<endl;
    cout<<*(mas+i)<<endl;
    ch=getch();
    switch(ch)
    {
      case 0:   ch=getch();
      case 72: if (i==0) i=GetN()-1; else i--; break;  // нажмите  Page Up
      case 80: if (i==GetN()-1) i=0; else i++;           //нажмите Page Down
    }
  } while(ch!=27);      // выход по нажатию Esc
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Action
{
 private:
  int n;
  TStud *mas;
 public:
  int GetN() {return n;}
  Action( int ); 
  ~Action();
  void Clear(){ n=0; }
  void Add(TStud);
  void ToFile();
  void FromFile(char*);
  void Obrab_Fac();
  void Obrab_Gr();
  void Sort_Spis();
  void ToScreen();
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2012, 18:33
Ответы с готовыми решениями:

Linker Error: Undefined symbol istream..
Linker Error: Undefined symbol istream::getline(char near*, &gt; int, unsigned char) in module...

Linker Error: Undefined symbol _getimage in module
Что это за ошибка и как ее исправить? Linker Error: Undefined symbol _getimage in module...

Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module)
Столкнулся с проблемой, сам не ожидал. Вот три файла main.cpp #include &lt;iostream.h&gt; #include...

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status
Здравствуйте. Вот недавно начал изучать книгу &quot;С++ для чайников&quot; Стефан Р. Девис 4-е издание. И...

43
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
19.11.2012, 18:36 2
ну и что же такое по вашему linker?
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 10:45  [ТС] 3
Ссылка

Добавлено через 15 часов 54 минуты
Помогите разобрать проблему, ошибок нет ну не запускается.
0
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
20.11.2012, 11:01 4
Да? а Компоновщик
тут совсем не при чем?

PS тогда бы уж перевели его как "ссылочник"
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 11:11  [ТС] 5
А как это сделать?

Добавлено через 1 минуту
Всмысле классы с main ом в один файл поместить?
0
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
20.11.2012, 11:13 6
Думаю что для начала прочитать это
http://forum.codenet.ru/q69347... myfile.cpp
(первая ссылка в гугле по Linker Error: undefined symbol, причем ваша тема на втором месте в гугле(с чем я вас и поздравляю - скоро возьмём первое ))
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 11:16  [ТС] 7
Блин да всё добавлял и галочку ставил и библиотека рабочая....
0
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
20.11.2012, 11:17 8
ну классы я бы не стал помещать вместе с main-ом. это конечно решение проблемы, но кривое.
этим самым в загубите развитие вашей программы. надо разбивать программы на небольшие файлики, в файликах хранить маленькие классы, в классах хранить маленькие методы.(многие нарушают эти правила, но начинающему я не советую нарушать)
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 11:18  [ТС] 9
У меня дело в том что так и есть два файла h три cpp. Все аккуратно. Но блин не работает
0
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
20.11.2012, 11:21 10
обычно чтобы добавить какую нить библиотечку надо
1) добавить в исходник #include с хидером библиотеки
2) указать компоновщику где хранятся библиотеки и какие библиотеки нужно подключить
либо просто подключить файлик .cpp к проекту чтобы он скомпилировался вместе с вашими исходниками в объектный файл
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 11:22  [ТС] 11
Ну а где тут не добавлено: всё есть
C++
1
2
3
4
5
6
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <graphics.h>
#include "tstud.h"
#include "action.h"
0
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
20.11.2012, 11:26 12
надо тогда комментировать весь код в main и закоментировать все #include и подключать их по одному, пока не появиться ошибка, когда она появиться нужно указать компоновщику имя библиотеки, которая должна быть связана с #include файлом
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 11:29  [ТС] 13
И так тоже пробывал, библиотеки все есть которые нужны.

Добавлено через 32 секунды
Может всё дело в компиляторе?
0
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
20.11.2012, 11:30 14
могу подсказать что проблема скорее всего в этих модулях

#include <graphics.h>( хотя это может быть тоже из стандартной библиотеки)
#include "tstud.h"
#include "action.h"

может просто надо добавить в проект tstud.cpp action.cpp
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 11:31  [ТС] 15
Ну еслиб проблемма была в #include "tstud.h"
#include "action.h" то мнеб при компиляции выдавалобы туеву хучу ошибок
0
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
20.11.2012, 11:33 16
Может всё дело в компиляторе?
может дело и в компиляторе
но мы сейчас обсуждаем проблему, которая реально есть в компоновщике.

хотя у меня не бывало ситуаций, чтоб gcc как-то неправильно работал
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 11:36  [ТС] 17
Так что мне делать? Я уже проверял препроверял 3 дня всё. Заново переписывал и т д .
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
20.11.2012, 11:38 18
А щас чё у тебя, на каком этапе всё это дело?
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 11:39  [ТС] 19
Ну прога написана при компиле ошибок нет. А при запуке 10 ошибок линкер ерор к каждому обработчику цепляет
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
20.11.2012, 11:45 20
Цитата Сообщение от Vadim8063 Посмотреть сообщение
А при запуке 10 ошибок линкер ерор к каждому обработчику цепляет
скинь мне экзешник
0
20.11.2012, 11:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2012, 11:45
Помогаю со студенческими работами здесь

Что за ошибка(Linker error: Undesined symbol)
Linker error: Undesined symbol proizv (float near*near*, float near*near*, int, float near*near*)...

[Linker error] undefined reference to 'r'
Помогите решить вышеописанную проблему, на переменную s так же ругаеться! #include &lt;stdio.h&gt;...

[Linker Error] undefined reference to
Вызываю так функцию в main'e: #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt;...

[Linker error] undefined reference to
#include&lt;string.h&gt; #include&lt;stdlib.h&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt; #include &lt;math.h&gt;...

[Linker error] undefined reference to __cpu_features_init
Вот наглядное пособие: ... А что он говорит и что делать, чтобы прога заработала?

[Linker Error] undefined reference to `__dyn_tls_init_callback'
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; int SumDigits (int N) { int d, sum...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru