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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
#1

Linker Error: undefined symbol - C++

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

Прога компилируется без ошибок, когда запускается, то появляется 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2012, 18:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Linker Error: undefined symbol (C++):

Linker Error: Undefined symbol istream.. - C++
Linker Error: Undefined symbol istream::getline(char near*, &gt; int, unsigned char) in module program.cpp. Пишет при попытке запуска...

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

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

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

Что за ошибка(Linker error: Undesined symbol) - C++
Linker error: Undesined symbol proizv (float near*near*, float near*near*, int, float near*near*) in module ... #include&lt;stdio.h&gt; ...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.11.2012, 14:07 #31
Vadim8063, поместите всё из action.CPP и tstud.cpp в файл с main() и не мучайтесь.
0
grizlik78
Эксперт С++
1913 / 1445 / 113
Регистрация: 29.05.2011
Сообщений: 3,001
20.11.2012, 14:12 #32
Но если говорить, как правильно, то надо создать проект, в который добавить все используемые файлы .cpp
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.11.2012, 14:19 #33
Совершенно согласен, но у ТС незнакомая мне среда: Borland c++ 3.1, и что, и как там не знаю.
0
grizlik78
Эксперт С++
1913 / 1445 / 113
Регистрация: 29.05.2011
Сообщений: 3,001
20.11.2012, 14:25 #34
Ну вот именно так. "Project->Open project" а потом "Project->Add item".
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,460
20.11.2012, 15:20 #35
Цитата Сообщение от XRuZzz Посмотреть сообщение

Не по теме:

ну лано шаманство, так шаманство, я не против мне интересней, что вы с exe файлом собирались делать?

да не нужен он мне был, мне просто нужно было удостовериться, что его нет.
_________
0
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 15:21  [ТС] #36
Блин перенос из cpp в h ничего не решил
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.11.2012, 15:27 #37
А если сделать как я посоветовал?
0
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 15:31  [ТС] #38
Появляются другие ошибки.
0
XRuZzz
Антикодер
676 / 577 / 28
Регистрация: 15.09.2012
Сообщений: 2,523
20.11.2012, 15:33 #39
так создайте новый проект
int main()
{
return 1;
}

и попробуйте скомпилировать.
если успешно подключите один из .h добавив в проект соответствующий .cpp

и напишите что получилось
0
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 15:37  [ТС] #40
Ну если новый создать то подключается все h
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.11.2012, 15:38 #41
Цитата Сообщение от Vadim8063 Посмотреть сообщение
Появляются другие ошибки.
Какие? Что-то не так делаете. Покажите файл.
0
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
20.11.2012, 15:40  [ТС] #42
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <graphics.h>
#include "tstud.h"
#include "action.h"
 
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;
}
 
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
}
 
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(); }
}
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.11.2012, 16:08 #43
В этих местах ошибки?
C++
1
s>>A.Shifr_Fac;
И куда инклюды исчезли?

Добавлено через 9 минут
В tstud.h ещё нужно сделать:
C++
1
2
#include <iostream>
using namespace std;
1
margarin
20.11.2012, 16:21     Linker Error: undefined symbol
  #44

Не по теме:

Цитата Сообщение от kravam Посмотреть сообщение
да не нужен он мне был, мне просто нужно было удостовериться, что его нет
Ну у тебя и скилл))

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2012, 16:21
Привет! Вот еще темы с ответами:

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

[Linker error] undefined reference to - C++
#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; #include&lt;fstream&gt; ...

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

[Linker Error] undefined reference to `instructions()' - C++
Dev c++ #include &lt;iostream&gt; using namespace std; void instructions(); int main() { instructions(); return 0;} void...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.11.2012, 16:21
Ответ Создать тему
Опции темы

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