44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
1

Не компилируется задача из Лафоре

13.01.2014, 21:30. Показов 2917. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста разбораться почему компилятор ругается:
1>L.obj : error LNK2019: unresolved external symbol "void __cdecl draw_circle(int,int,int)" (?draw_circle@@YAXHHH@Z) referenced in function "void __cdecl circ_draw(struct circle)" (?circ_draw@@YAXUcircle@@@Z) .....
1>C:\Users\Администратор\Documents\Visual Studio 2010\Projects\LLLL\Debug\LLLL.exe : fatal error LNK1120: 5 unresolved externals
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
#include "msoftcon.h" // для графических функций 
struct circle // графический объект "круг" 
{ 
int xCo, yCo; // координаты центра 
int radius; 
color fillcolor; // цвет 
fstyle fillstyle; // стиль заполнения 
}; 
 
void circ_draw(circle c) 
{ 
set_color(c.fillcolor); // установка цвета 
set_fill_style(c.fillstyle); // установка стиля заполнения 
draw_circle(c.xCo, c.yCo, c.radius); // рисование круга 
} 
 
int main() 
{ 
init_graphics(); // инициализация графики 
// создание кругов 
circle c1 = { 15, 7, 5, cBLUE, X_FILL }; 
circle c2 = { 41, 12, 7, cRED, O_FILL }; 
circle c3 = { 65, 18, 4, cGREEN, MEDIUM_FILL }; 
circ_draw(c1); // рисование кругов 
circ_draw(c2); 
circ_draw(c3); 
set_cursor_pos(1, 25); 
return 0; 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2014, 21:30
Ответы с готовыми решениями:

Лафоре Не компилируется пример
Вот текст кода#include "msoftcon.h" class Shape { protected: int xCo, yCo; color...

Р. Лафоре "ООП в C++". Не компилируется пример с консольной графикой
Изучаю C++ по книге Р. Лафоре. Дошёл до 5-ой главы, и мне встретился пример использования...

Не компилируется листинг "Передача по ссылке аргументов" Р.Лафоре
Вообщем в 5 Главе имеется листинг. Набрал его в Visual Studio 2013. При компиляции выдает ошибку....

Задача из Лафоре
Для разъяснения действия наших доморощенных указателей мы смоделируем память компьютера с помощью...

23
Модератор
Эксперт С++
13597 / 10828 / 6441
Регистрация: 18.12.2011
Сообщений: 28,867
13.01.2014, 21:36 2
Не подключена библиотека, содержащая реализацию
draw_circle(c.xCo, c.yCo, c.radius); // рисование круга
Я что-то ничего не знаю о наличии таких функций в VS
1
Заблокирован
13.01.2014, 22:09 3
Ошибка в коде
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
13.01.2014, 22:36 4
Цитата Сообщение от zss Посмотреть сообщение
Я что-то ничего не знаю о наличии таких функций в VS
Там кроме msoftcon.h ещё и msoftcon.cpp есть:
Кликните здесь для просмотра всего текста
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
//msoftcon.cpp
//provides routines to access Windows console functions
 
//compiler needs to be able to find this file
//in MCV++, /Tools/Options/Directories/Include/type path name
 
#include "msoftcon.h"
HANDLE hConsole;         //console handle
char fill_char;          //character used for fill
//--------------------------------------------------------------
void init_graphics()
   {
   COORD console_size = {80, 25};
   //open i/o channel to console screen
   hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,
                   FILE_SHARE_READ | FILE_SHARE_WRITE,
                   0L, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0L);
   //set to 80x25 screen size
   SetConsoleScreenBufferSize(hConsole, console_size);
   //set text to white on black
   SetConsoleTextAttribute( hConsole, (WORD)((0 << 4) | 15) );
 
   fill_char = '\xDB';  //default fill is solid block
   clear_screen();
   }
//--------------------------------------------------------------
void set_color(color foreground, color background)
   {
   SetConsoleTextAttribute( hConsole, 
                        (WORD)((background << 4) | foreground) );
   }  //end setcolor()
 
/* 0  Black          8  Dark gray
   1  Dark blue      9  Blue
   2  Dark green     10 Green
   3  Dark cyan      11 Cyan
   4  Dark red       12 Red
   5  Dark magenta   13 Magenta
   6  Brown          14 Yellow
   7  Light gray     15 White
*/
//--------------------------------------------------------------
void set_cursor_pos(int x, int y)
   {
   COORD cursor_pos;              //origin in upper left corner
   cursor_pos.X = x - 1;          //Windows starts at (0, 0)
   cursor_pos.Y = y - 1;          //we start at (1, 1)
   SetConsoleCursorPosition(hConsole, cursor_pos);
   }
//--------------------------------------------------------------
void clear_screen()
   {
   set_cursor_pos(1, 25);
   for(int j=0; j<25; j++)
      putch('\n');
   set_cursor_pos(1, 1);
   }
//--------------------------------------------------------------
void wait(int milliseconds)
   {
   Sleep(milliseconds);
   }
//--------------------------------------------------------------
void clear_line()                    //clear to end of line
   {                                 //80 spaces
   //.....1234567890123456789012345678901234567890
   //.....0........1.........2.........3.........4 
   cputs("                                        ");
   cputs("                                        ");
   }
//--------------------------------------------------------------
void draw_rectangle(int left, int top, int right, int bottom) 
   {
   char temp[80];
   int width = right - left + 1;
 
   for(int j=0; j<width; j++)      //string of squares
      temp[j] = fill_char;   
   temp[j] = 0;                    //null
 
   for(int y=top; y<=bottom; y++)  //stack of strings 
      {
      set_cursor_pos(left, y);
      cputs(temp);
      }
   }
//--------------------------------------------------------------
void draw_circle(int xC, int yC, int radius)
   {
   double theta, increment, xF, pi=3.14159;
   int x, xN, yN;
 
   increment = 0.8 / static_cast<double>(radius);
   for(theta=0; theta<=pi/2; theta+=increment)  //quarter circle
      {
      xF = radius * cos(theta);  
      xN = static_cast<int>(xF * 2 / 1); //pixels not square
      yN = static_cast<int>(radius * sin(theta) + 0.5);
      x = xC-xN;
      while(x <= xC+xN)          //fill two horizontal lines
         {                       //one for each half circle
         set_cursor_pos(x,   yC-yN); putch(fill_char);  //top
         set_cursor_pos(x++, yC+yN); putch(fill_char);  //bottom
         }
      }  //end for
   }
//--------------------------------------------------------------
void draw_line(int x1, int y1, int x2, int y2)
   {
 
   int w, z, t, w1, w2, z1, z2;
   double xDelta=x1-x2, yDelta=y1-y2, slope;
   bool isMoreHoriz;
 
   if( fabs(xDelta) > fabs(yDelta) ) //more horizontal
      {
      isMoreHoriz = true;
      slope = yDelta / xDelta;
      w1=x1; z1=y1; w2=x2, z2=y2;    //w=x, z=y 
      }
   else                              //more vertical
      {
      isMoreHoriz = false;
      slope = xDelta / yDelta;
      w1=y1; z1=x1; w2=y2, z2=x2;    //w=y, z=x
      }
 
   if(w1 > w2)                       //if backwards w
      {
      t=w1; w1=w2; w2=t;             //   swap (w1,z1)
      t=z1; z1=z2; z2=t;             //   with (w2,z2)
      }
   for(w=w1; w<=w2; w++)            
      {
      z = static_cast<int>(z1 + slope * (w-w1));
      if( !(w==80 && z==25) )        //avoid scroll at 80,25
         {
         if(isMoreHoriz)
            set_cursor_pos(w, z);
         else
            set_cursor_pos(z, w);
         putch(fill_char);
         }
      }
   }
//--------------------------------------------------------------
void draw_pyramid(int x1, int y1, int height)
   {
   int x, y;
   for(y=y1; y<y1+height; y++)
      {
      int incr = y - y1;
      for(x=x1-incr; x<=x1+incr; x++)
         {
         set_cursor_pos(x, y);
         putch(fill_char);
         }
      }
   }
//--------------------------------------------------------------
void set_fill_style(fstyle fs)
   {
   switch(fs)
      {
      case SOLID_FILL:  fill_char = '\xDB'; break;
      case DARK_FILL:   fill_char = '\xB0'; break;
      case MEDIUM_FILL: fill_char = '\xB1'; break;
      case LIGHT_FILL:  fill_char = '\xB2'; break;
      case X_FILL:      fill_char = 'X';    break;
      case O_FILL:      fill_char = 'O';    break;
      }
   }
//--------------------------------------------------------------


Добавлено через 4 минуты
Lar4ik, в проекте этот файл (msoftcon.cpp) присутствует?
1
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
14.01.2014, 08:27  [ТС] 5
msoftcon.h и msoftcon.cpp есть. находятся в папке include
0
Заблокирован
14.01.2014, 08:48 6
Lar4ik, по той сылке, что я дал написано же что делать:

Project - > "имя проекта" property... -> configuration Properties -> General - > Сharacter set -> Use Multi-Bite Charakcter set.

Цитата Сообщение от nonedark2008 Посмотреть сообщение
а в функции draw_rectangle в начале приписать int j; и убрать int в цикле for ниже.
Цитата Сообщение от IvanInanovich Посмотреть сообщение
Перед cputs поставил нижний слеш (_cputs) и заработало.
Пробуйте
0
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
14.01.2014, 10:15  [ТС] 7
Ev_Hyper, я может туплю сильно, но где у меня в задаче draw_rectangle и cputs?

Добавлено через 7 минут
все, дошло.
0
Заблокирован
14.01.2014, 10:21 8
помогло?
0
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
14.01.2014, 10:28  [ТС] 9
но даже после всех этих действий ошибки те же.
0
Заблокирован
14.01.2014, 10:29 10
Project - > "имя проекта" property... -> configuration Properties -> General - > Сharacter set -> Use Multi-Bite Charakcter set.

сделали?
0
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
14.01.2014, 10:34  [ТС] 11
да.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.01.2014, 11:02 12
Цитата Сообщение от Lar4ik Посмотреть сообщение
msoftcon.h и msoftcon.cpp есть. находятся в папке include
В какой папке include? В папке проекта должны быть, и msoftcon.cpp должен присутствовать в проекте (быть виден в обозревателе решений, в файлах исходного кода).
Миниатюры
Не компилируется задача из Лафоре  
0
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
14.01.2014, 11:45  [ТС] 13
у меня окно имеет такой вид:
Миниатюры
Не компилируется задача из Лафоре  
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.01.2014, 11:48 14
Цитата Сообщение от Lar4ik Посмотреть сообщение
у меня окно имеет такой вид:
И что? 12 пост читайте.
1
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
14.01.2014, 12:01  [ТС] 15
действительно, файлы были не в той папке. Спасибо. Все заработало
0
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
14.01.2014, 12:07  [ТС] 16
Вот так:
Миниатюры
Не компилируется задача из Лафоре  
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.01.2014, 12:16 17
Цитата Сообщение от Lar4ik Посмотреть сообщение
Вот так:
Для порядка, перетащите msoftcon.h в Header Files. Где он находится в обозревателе решений - по сути не важно (можно вообще убрать), главное, чтобы был в папке проекта.
0
6 / 6 / 1
Регистрация: 16.07.2013
Сообщений: 74
06.02.2014, 15:28 18
У меня та же беда
Миниатюры
Не компилируется задача из Лафоре  
0
6 / 6 / 1
Регистрация: 16.07.2013
Сообщений: 74
06.02.2014, 15:49 19
Я обычно Dev-cpp пользуюсь, но там тоже подключить так и не получилось, впрочем как и в VS
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.02.2014, 16:43 20
Цитата Сообщение от Drusha Посмотреть сообщение
У меня та же беда
Мой вам совет: создавайте Пустой проект (Общие - Пустой).
0
06.02.2014, 16:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2014, 16:43
Помогаю со студенческими работами здесь

Задача из Лафоре
есть задачка из Лафоре -&gt; Модифицируйте класс bMoney из упражнения 12 главы 7 «Массивы и...

Лафоре задача по классам
Задача из книги лафоре по классам №7: нужно написать программу используя классы для ввода и вывода...

Лафоре. Глава 11. Задача 2
Решал задачку из учебника - Лафоре. Глава 11. Задача 2. Вот код #include &lt;iostream&gt; #include...

Очередь (задача из Лафоре)
Задача 9 из Лафоре: Надо написать класс queue, имеющий два метода: put() для помещения элемента в...

Задача по книге Р. Лафоре
Пример по книге Лафоре... (Система Windows 10/64bit.) Я знаю что на форуме есть решения но я хочу...

Лафоре,задача про денежный тип
Вот задачка: Одним из недостатков C++ является отсутствие для бизнес-программ встроенного типа для...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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