С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Lar4ik
43 / 40 / 20
Регистрация: 27.02.2013
Сообщений: 284
#1

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

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

Помогите пожалуйста разбораться почему компилятор ругается:
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2014, 21:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не компилируется задача из Лафоре (C++):

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

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

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

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

Задача из Лафоре - C++
есть задачка из Лафоре -> Модифицируйте класс bMoney из упражнения 12 главы 7 «Массивы и стро-ки», включив арифметические операции,...

Лафоре. Глава 11. Задача 2 - C++
Решал задачку из учебника - Лафоре. Глава 11. Задача 2. Вот код #include <iostream> #include <iomanip> #include <conio.h> ...

23
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,010
Завершенные тесты: 1
13.01.2014, 21:36 #2
Не подключена библиотека, содержащая реализацию
draw_circle(c.xCo, c.yCo, c.radius); // рисование круга
Я что-то ничего не знаю о наличии таких функций в VS
1
Ev_Hyper
Заблокирован
13.01.2014, 22:09 #3
Ошибка в коде
1
alsav22
5428 / 4823 / 442
Регистрация: 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
Lar4ik
43 / 40 / 20
Регистрация: 27.02.2013
Сообщений: 284
14.01.2014, 08:27  [ТС] #5
msoftcon.h и msoftcon.cpp есть. находятся в папке include
0
Ev_Hyper
Заблокирован
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
Lar4ik
43 / 40 / 20
Регистрация: 27.02.2013
Сообщений: 284
14.01.2014, 10:15  [ТС] #7
Ev_Hyper, я может туплю сильно, но где у меня в задаче draw_rectangle и cputs?

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

сделали?
0
Lar4ik
43 / 40 / 20
Регистрация: 27.02.2013
Сообщений: 284
14.01.2014, 10:34  [ТС] #11
да.
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.01.2014, 11:02 #12
Цитата Сообщение от Lar4ik Посмотреть сообщение
msoftcon.h и msoftcon.cpp есть. находятся в папке include
В какой папке include? В папке проекта должны быть, и msoftcon.cpp должен присутствовать в проекте (быть виден в обозревателе решений, в файлах исходного кода).
0
Миниатюры
Не компилируется задача из Лафоре  
Lar4ik
43 / 40 / 20
Регистрация: 27.02.2013
Сообщений: 284
14.01.2014, 11:45  [ТС] #13
у меня окно имеет такой вид:
0
Миниатюры
Не компилируется задача из Лафоре  
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.01.2014, 11:48 #14
Цитата Сообщение от Lar4ik Посмотреть сообщение
у меня окно имеет такой вид:
И что? 12 пост читайте.
1
Lar4ik
43 / 40 / 20
Регистрация: 27.02.2013
Сообщений: 284
14.01.2014, 12:01  [ТС] #15
действительно, файлы были не в той папке. Спасибо. Все заработало
0
14.01.2014, 12:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2014, 12:01
Привет! Вот еще темы с ответами:

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

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

Задача 7 главы 7 из книги Р. Лафоре. Строки - C++
Добрый день! Недавно начал изучать С++ по, наверное, уже всем поднадоевшему, учебнику Роберта Лафоре. На данный момент изучаю главу с...

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


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

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

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