Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/19: Рейтинг темы: голосов - 19, средняя оценка - 4.63
827 / 349 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
1

Error LNK2019 + упрощенный вариант консольной графики

11.08.2009, 03:49. Просмотров 3967. Ответов 20
Метки нет (Все метки)

Программка из книги Лафоре "ОПП в С++", Глава 10.
Закинул я msoftcon.h и msoftcon.срр в папку к исходникам..
horse.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
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <ctime>
#include <cstdlib>
#include "msoftcon.h"
const int CPF = 5;
const int maxHorses = 7;
//////////////////////////////////////////////////////////////////////////
class track;
//////////////////////////////////////////////////////////////////////////
class horse
{
private:
    const track* ptrTrack;
    const int horse_number;
    float finish_time;
    float distance_run;
public:
    horse(const int n, const track* ptrT):
      horse_number(n),
      ptrTrack(ptrT),
      distance_run(0.0)
    {}
    ~horse()
    {}
    void display_horse(const float elapsed_time);
};
//////////////////////////////////////////////////////////////////////////
class track
{
private:
    horse* hArray[maxHorses];
    int total_horses;
    int horse_count;
    const float track_length;
    float elapsed_time;
public:
    track(float lenTr, int nH);
    ~track();
    void display_track();
    void run();
    float get_track_len() const;
};
//////////////////////////////////////////////////////////////////////////
void horse::display_horse(const float elapsed_time)
{
    set_cursor_pos(1 + int(distance_run*CPF),2 + horse_number*2);
    set_color(static_cast<color>(cBLUE + horse_number));
    char horse_char = '0' + static_cast<char>(horse_number);
    putch(' ');
    putch('\xDB');
    putch(horse_char);
    putch('\xDB');
    if(distance_run < ptrTrack->get_track_len() + 1.0/CPF)
    {
        if(rand()%3)
            distance_run = 0.2F;
        finish_time = elapsed_time;
    }
    else
    {
        int mins = int(finish_time)/60;
        int secs = int(finish_time) - mins*60;
        cout << "Время = " << mins << ":" << secs; 
    }
}
//////////////////////////////////////////////////////////////////////////
track::track(float lenTr, int nH):
    track_length(lenTr),
    total_horses(nH),
    horse_count(0),
    elapsed_time(0.0)
{
    init_graphics();
    total_horses = (total_horses > maxHorses) ? maxHorses : total_horses;
    for(int j = 0; j < total_horses;j++)
        hArray[j] = new horse(horse_count++,this);
 
    time_t aTime;
    srand(static_cast<unsigned>(time(&aTime)));
    display_track();
}
//////////////////////////////////////////////////////////////////////////
track::~track()
{
    for(int j = 0; j < total_horses;j++)
        delete hArray[j];
}
//////////////////////////////////////////////////////////////////////////
void track::display_track()
{
    clear_screen();
 
    for(int f = 0; f <= track_length;f++)
        for(int r = 1; r <= track_length*2 + 1;r++)
        {
            set_cursor_pos(f * CPF + 5, r);
            if(f == 0 || f == track_length)
                cout << '\xDB';
            else 
                cout << '\xB3';
        }
}
//////////////////////////////////////////////////////////////////////////
void track::run()
{
    while(!kbhit())
    {
        elapsed_time += 1.75;
        for(int j = 0; j < total_horses;j++)
            hArray[j]->display_horse(elapsed_time);
        wait(500);
    }
    getch();
    cout << endl;
}
//////////////////////////////////////////////////////////////////////////
float track::get_track_len() const
{
    return track_length;
}
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
    float length;
    int total;
    cout << "\nВведите длину дистанции(от 1 до 12): ";
    cin >> length;
    cout << "\nВведите количество лошадей(от 1 до 7): ";
    cin >> total;
    track theTrack(length,total);
    theTrack.run();
    getchar();
    return 0;
}

msoftcon.h
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
//msoftcon.h
//Объявления функций консольной графики от Lafore
//используются консольные функции Windows 
 
#ifndef _INC_WCONSOLE    //этот файл не должен включаться
#define _INC_WCONSOLE    //дважды в тот же исходный файл
 
#include <windows.h>     //для консольных функций Windows
#include <conio.h>       //для kbhit(), getche()
#include <math.h>        //для sin, cos
 
enum fstyle { SOLID_FILL, X_FILL,      O_FILL, 
              LIGHT_FILL, MEDIUM_FILL, DARK_FILL };
 
enum color {
   cBLACK=0,     cDARK_BLUE=1,  cDARK_GREEN=2, DARK_CYAN=3, 
   cDARK_RED=4,  cDARK_MAGENTA=5, cBROWN=6,  cLIGHT_GRAY=7,
   cDARK_GRAY=8, cBLUE=9,         cGREEN=10,     cCYAN=11, 
   cRED=12,      cMAGENTA=13,     cYELLOW=14,    cWHITE=15 };
//---------------------------------------------------------
void init_graphics();
void set_color(color fg, color bg = cBLACK);
void set_cursor_pos(int x, int y);
void clear_screen();
void wait(int milliseconds);
void clear_line();
void draw_rectangle(int left, int top, int right, int bottom);                    
void draw_circle(int x, int y, int rad);
void draw_line(int x1, int y1, int x2, int y2);
void draw_pyramid(int x1, int y1, int height);
void set_fill_style(fstyle);
#endif /* _INC_WCONSOLE */

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
174
175
//msoftcon.cpp
//подпрограммы доступа к консольным функциям Windows 
 
//компилятор должен знать, где искать этот файл
//в MCV++, /Tools/Options/Directories/Include/type путь
 
#include "msoftcon.h"
HANDLE hConsole;         //поддержка консольного режима 
char fill_char;          //символ заполнения
//---------------------------------------------------------
void init_graphics()
   {
   COORD console_size = {80, 25};
   //открыть канал ввода/вывода на консоль
   hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,
                   FILE_SHARE_READ | FILE_SHARE_WRITE,
                   0L, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0L);
   //установить размер экрана 80x25 
   SetConsoleScreenBufferSize(hConsole, console_size);
   //текст белым по черному 
   SetConsoleTextAttribute( hConsole, (WORD)((0 << 4) | 15) );
 
   fill_char = '\xDB';  //заполнение по умолчанию
   clear_screen();
   }
//---------------------------------------------------------
void set_color(color foreground, color background)
   {
   SetConsoleTextAttribute( hConsole, 
                        (WORD)((background << 4) | foreground) );
   }  //конец setcolor()
 
/* 0  Черный          8  Темно-серый
   1  Темно-синий     9  Синий
   2  Темно-зеленый   10 Зеленый
   3  Темно-голубой   11 Алый
   4  Темно-красный   12 красный
   5  Темно-алый      13 алый
   6  Коричневый      14 Желтый
   7  Светло-серый    15 Белый
*/
//---------------------------------------------------------
void set_cursor_pos(int x, int y)
   {
   COORD cursor_pos;            //Начало в верхнем левом 
   cursor_pos.X = x - 1;        //Windows начинает с (0, 0)
   cursor_pos.Y = y - 1;        //мы начнем с (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()                 //очистка до конца строки
   {                              //80 пробелов
   //.....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++)      //строка квадратов
      temp[j] = fill_char;   
   temp[j] = 0;                    //null
 
   for(int y=top; y<=bottom; y++)  //строковый стек 
      {
      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)//1/4 
                                            //окружности
      {
      xF = radius * cos(theta);  
      xN = static_cast<int>(xF * 2 / 1); //пикселы не
                                         //квадратные :-(
      yN = static_cast<int>(radius * sin(theta) + 0.5);
      x = xC-xN;
      while(x <= xC+xN) //заполнить две горизонтальные линии
         {              //по одной на каждую ? окружности
         set_cursor_pos(x, yC-yN); putch(fill_char); //верх
         set_cursor_pos(x++,yC+yN); putch(fill_char); //низ
         }
      }  //конец 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) ) //еще горизонтальная
      {
      isMoreHoriz = true;
      slope = yDelta / xDelta;
      w1=x1; z1=y1; w2=x2, z2=y2;    //w=x, z=y 
      }
   else                              //еще вертикальная
      {
      isMoreHoriz = false;
      slope = xDelta / yDelta;
      w1=y1; z1=x1; w2=y2, z2=x2;    //w=y, z=x
      }
 
   if(w1 > w2)                       //если за w
      {
      t=w1; w1=w2; w2=t;             //   заменить (w1,z1)
      t=z1; z1=z2; z2=t;             //   на (w2,z2)
      }
   for(w=w1; w<=w2; w++)            
      {
      z = static_cast<int>(z1 + slope * (w-w1));
      if( !(w==80 && z==25) )  //убрать прокрутку на 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;
      }
   }
//---------------------------------------------------------

Ошибки
Код
1>c:\myprojects\horse\horse\horse.cpp(54) : warning C4996: 'putch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _putch. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\conio.h(152): см. объявление 'putch'
1>c:\myprojects\horse\horse\horse.cpp(55) : warning C4996: 'putch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _putch. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\conio.h(152): см. объявление 'putch'
1>c:\myprojects\horse\horse\horse.cpp(56) : warning C4996: 'putch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _putch. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\conio.h(152): см. объявление 'putch'
1>c:\myprojects\horse\horse\horse.cpp(57) : warning C4996: 'putch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _putch. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\conio.h(152): см. объявление 'putch'
1>c:\myprojects\horse\horse\horse.cpp(111) : warning C4996: 'kbhit': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _kbhit. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\conio.h(147): см. объявление 'kbhit'
1>c:\myprojects\horse\horse\horse.cpp(118) : warning C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\conio.h(145): см. объявление 'getch'
1>Компоновка...
1>horse.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl set_color(enum color,enum color)" (?set_color@@YAXW4color@@0@Z) в функции "public: void __thiscall horse::display_horse(float)" (?display_horse@horse@@QAEXM@Z)
1>horse.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl set_cursor_pos(int,int)" (?set_cursor_pos@@YAXHH@Z) в функции "public: void __thiscall horse::display_horse(float)" (?display_horse@horse@@QAEXM@Z)
1>horse.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl init_graphics(void)" (?init_graphics@@YAXXZ) в функции "public: __thiscall track::track(float,int)" (??0track@@QAE@MH@Z)
1>horse.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl clear_screen(void)" (?clear_screen@@YAXXZ) в функции "public: void __thiscall track::display_track(void)" (?display_track@track@@QAEXXZ)
1>horse.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl wait(int)" (?wait@@YAXH@Z) в функции "public: void __thiscall track::run(void)" (?run@track@@QAEXXZ)

Варинги, я понимаю, от conio.h, а как проблему с error LNK2019 подскажите решить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2009, 03:49
Ответы с готовыми решениями:

Упрощенный вариант корзины покупателя
Подскажите, кто знает, как сделать очень примитивный вариант корзины покупателя, чтобы при нажатии...

Упрощенный вариант программы sort системы UNIX по Кернигану и Ритчи
Не понимаю почему не происходит сортировка. Вот код #include &lt;stdio.h&gt; #include &lt;string.h&gt; ...

Error LNK1120, error LNK2019, error LNK2028, queue
// свойство класса Parser queue&lt;elem*&gt;* postfix = new queue&lt;elem*&gt;; // строка, из-за...

Очистка консольной графики
Народ, подскажите, пожалуйста, какие есть функции для очистки графиков в консоле? P.S....

20
4845 / 3266 / 466
Регистрация: 10.12.2008
Сообщений: 10,569
11.08.2009, 08:07 2
C++
1
2
3
4
#ifndef _INC_WCONSOLE    //этот файл не должен включаться
#define _INC_WCONSOLE    //дважды в тот же исходный файл
...
#endif /* _INC_WCONSOLE */
C++
1
2
3
4
//#ifndef _INC_WCONSOLE    //этот файл не должен включаться
//#define _INC_WCONSOLE    //дважды в тот же исходный файл
...
//#endif /* _INC_WCONSOLE */
1
827 / 349 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
11.08.2009, 10:44  [ТС] 3
accept, спс, что откликнулся, но, что с этим делать..?
0
4845 / 3266 / 466
Регистрация: 10.12.2008
Сообщений: 10,569
11.08.2009, 10:58 4
просто закомментируй строки условного включения
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.08.2009, 11:00 5
insolent, MSVC 2008 SP1. всё билдится без проблем.
единственный error был тут:
C++
1
2
3
4
5
6
void draw_rectangle(int left, int top, int right, int bottom) {
...
for(int j=0; j<width; j++)      //строка квадратов
      temp[j] = fill_char;   
   temp[j] = 0;                    //!!! j - undeclared identifier
...
0
827 / 349 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
11.08.2009, 11:06  [ТС] 6
accept, все осталось по старому..(
zim22, у меня тоже студия 2008, но без SP1..
0
4845 / 3266 / 466
Регистрация: 10.12.2008
Сообщений: 10,569
11.08.2009, 11:14 7
закинул msoftcon.cpp в папку, надо чтобы он был в проекте, чтобы компиляцию проходил
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.08.2009, 11:14 8
Цитата Сообщение от insolent Посмотреть сообщение
у меня тоже студия 2008, но без SP1..
sp1 тут не причём.
попробуй сбилдить мой solution
0
Вложения
Тип файла: rar proj.rar (9.8 Кб, 101 просмотров)
827 / 349 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
11.08.2009, 11:36  [ТС] 9
Цитата Сообщение от zim22 Посмотреть сообщение
попробуй сбилдить мой solution
с твоим все Ок,
теперь
такое
Код
c:\myprojects\horse\horse\msoftcon.cpp(7) : warning C4627: #include "msoftcon.h": пропущен при поиске использования предкомпилированного заголовка
1>        Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка
1>c:\myprojects\horse\horse\msoftcon.cpp(178) : fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "stdafx.h"" в источник.
с моим
Может, я как-то не так подключаю файлы к проекту?
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.08.2009, 11:40 10
Цитата Сообщение от insolent Посмотреть сообщение
Может, я как-то не так подключаю файлы к проекту?
отключи precompiled headers:

Properties-C/C++-Precompiled headers-Create|Use Precompiled Header: Not using Precompiled Headers
1
4845 / 3266 / 466
Регистрация: 10.12.2008
Сообщений: 10,569
11.08.2009, 11:44 11
в dev-cpp пришлось

решить с j
cputs'ы заменить на puts'ы
включить для puts'ов <cstdio>
хедеры без изменений, убрал только stdafx.h
всё
1
827 / 349 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
11.08.2009, 11:53  [ТС] 12
у меня теперь
такое
Код
1>c:\myprojects\horse\horse\msoftcon.cpp(18) : error C2664: CreateFileW: невозможно преобразовать параметр 1 из 'const char [8]' в 'LPCWSTR'
1>        Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
такое.
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.08.2009, 11:56 13
Цитата Сообщение от insolent Посмотреть сообщение
у меня теперь такое
отключи поддержку Unicode
Propetries-Configuration Properties-General-Character Set:Use Multi-Byte Character Set
1
31 / 31 / 8
Регистрация: 17.09.2012
Сообщений: 186
21.09.2012, 21:13 14
Цитата Сообщение от zim22 Посмотреть сообщение
отключи precompiled headers:

Properties-C/C++-Precompiled headers-Create|Use Precompiled Header: Not using Precompiled Headers
У меня русский Microsoft Visual C++ 2010 Express. Не могу никак найти этот пункт в русской версии.
Прооблема такая же как у топикстартера.



Еще не совсем понимаю это: Что именно надо закомментировать, надо ли и для чего?
C#
1
2
3
4
5
6
//msoftcon.h
//Объявления функций консольной графики от Lafore
//используются консольные функции Windows 
 
#ifndef _INC_WCONSOLE    // этот файл не должен включаться
#define _INC_WCONSOLE    //дважды в тот же исходный файл
И тут странное:


Добавлено через 46 минут
Проект в данный момент выглядит так:


.cpp и .h кинул в папку с проектом. После чего слевой стороны пкм по "заголовочные файлы/файлы исходного кода >> добавить >> существующий элемент.
0
DU
1492 / 1138 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
21.09.2012, 21:15 15
на счет таких вот вызовов:
C++
1
2
3
 hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,
                   FILE_SHARE_READ | FILE_SHARE_WRITE,
                   0L, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0L);
если явно используются ASCII (или ANSI, хз что правильно) строка, то и функцию желательно вызывать явно правильную. т.е.
CreateFileA ну или хотябы знать, что есть CreateFileA и CreateFileW и куча других функций с такими же суффиксами. Или же всю строку желательно оборавичать в спец макросы: TEXT("dsfrs"), _L("dsfs") и т.п.
А то проект может быть заточен под unicode, а тут раз, и отрубили поддержку ради компилябильности, не вдаваясь в детали.
1
31 / 31 / 8
Регистрация: 17.09.2012
Сообщений: 186
21.09.2012, 21:23 16
Спасибо за разъяснение!

Теперь остались траблы только по cpp
[img]http://s017.***********/i441/1209/c6/8d9f39e5edf6.png[/img]
0
DU
1492 / 1138 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
21.09.2012, 21:26 17
блин. ну по русски написано же, возможно вы забыли добавить stdafx. добавте и посмотрите что будет. ошибки выводятся не просто так, чтобы отразить факт ошибки. типа есть ошибка, сами догадайтесь где и почему. есть описание и в данном случае вполне ясное.
0
31 / 31 / 8
Регистрация: 17.09.2012
Сообщений: 186
21.09.2012, 21:32 18
Так ведь есть он у меня:

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
// Test_Project.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include "msoftcon.h"
using namespace std;
 
///////////////////////////////////////////////////////////////////////
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 ()
{
    system("chcp 1251 >nul");
 
    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
DU
1492 / 1138 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
21.09.2012, 21:35 19
ругается на файл msoftcon.cpp
в описании ошибки это тоже есть. смотрите внимательнее.
1
31 / 31 / 8
Регистрация: 17.09.2012
Сообщений: 186
21.09.2012, 21:53 20
Добавил этот заголовочный в сpp, пропали ошибки и предупреждения. Правда на выходе ад и содомия:

[img]http://s016.***********/i336/1209/78/ec1cae5186fa.png[/img]
Листинг что скидывал выше - пример из книги. Хотя, после трех ошибок в cpp и h под этот пример, прилагаемых к книге, я не удивляюсь. =)

[img]http://s019.***********/i629/1209/1d/6b5148e5bec8.jpg[/img]
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2012, 21:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

С++ библиотеки для консольной графики
Доброго времени суток. Какие в с++ есть библиотеки для создания консольной графики? Заранее...

Как создать "Упрощенный" вариант формы
Здравствуйте! У меня созрела необходимость создать, так называемый, &quot;Упрощенный&quot; вариант формы, как...

Существует ли библиотека для консольной графики в C++?
прочитал уже 3 книги по с++ (не визуал) и не нашёл ни слова о графике. в том же самом паскале есть...

Функция инициализации консольной графики от Лафоре
Доброго времени суток. Пытаюсь использовать( только обучения ради ) и изменить библиотеку...


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

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

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