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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 5.00
florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 355
#1

Точка входа должна быть определена - C++

06.12.2012, 21:03. Просмотров 3302. Ответов 7

Всем привет. На YouTube нашел видео. Стало интересно. Там был приложен файл исходного кода .срр.
Я скачал и попытался скомпилировать и у меня не получилось. Glut подключен.
Я это же делал несколько месяцев назад и все получалось.
Выкладываю исходный код, который там был приложен.
IDE MSVS2010 C++;

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
#include <time.h>
#include <stdlib.h>
#include  <GL/glut.h>
 
int N=30,M=20;
int Scale=25;
 
int w = Scale*N;
int h = Scale*M;
 
int dir,num=4;
 
struct 
{ int x;
  int y;}  s[100];
 
class Fructs
{ 
public:
    int x,y;
 
    void New()
    {  x=rand() % N;
        y=rand() % M;   }
    
    void DrawApple()
   {   glColor3f(0.0,1.0,0.0);
       glRectf(x*Scale,y*Scale,(x+1)*Scale,(y+1)*Scale); }
 
} m[10];
 
 void DrawSnake()
 {  
  glColor3f(0.0,0.0,1.0);
  for (int i=0;i<num;i++)
    {glRectf(s[i].x*Scale, s[i].y*Scale, (s[i].x+0.9)*Scale, (s[i].y+0.9)*Scale); }
 }
 
 void Tick()
 {
    for (int i=num;i>0;--i)
     {s[i].x=s[i-1].x;
     s[i].y=s[i-1].y;}
 
    if (dir==0) s[0].y+=1;      
    if (dir==1) s[0].x-=1;        
    if (dir==2) s[0].x+=1;         
    if (dir==3) s[0].y-=1;         
 
  for (int i=0;i<10;i++)
    if ((s[0].x==m[i].x) && (s[0].y==m[i].y)) 
      {num++; m[i].New();}
 
  if (s[0].x>N) dir=1;  if (s[0].x<0) dir=2;
  if (s[0].y>M) dir=3;  if (s[0].y<0) dir=0;
 
 for (int i=1;i<num;i++)
  if (s[0].x==s[i].x && s[0].y==s[i].y)  num=i;
 }
 
 
 
void DrawField()
  {
   glColor3f(0.0,0.7,0.0);
   glBegin(GL_LINES);
    for (int i=0; i<w; i+=Scale) 
      {glVertex2f(i,0); glVertex2f(i,h);}
    for (int j=0; j<h; j+=Scale)  
      {glVertex2f(0,j); glVertex2f(w,j);}
    glEnd();
}
 
 
void display() {
 
     glClear(GL_COLOR_BUFFER_BIT);
 
    DrawField();
 
    DrawSnake(); 
 
   for (int i=0;i<10;i++)
     m[i].DrawApple();
 
   glFlush();
   glutSwapBuffers();
}
 
void KeyboardEvent(int key, int a, int b)
{   
    switch(key)
    {
        case 101 :  dir=0; break;
         case 102:   dir=2; break;
        case 100 :  dir=1; break;
        case 103 :  dir=3; break;
     }
}
 
void timer(int = 0)
{
  display();
 
  Tick();
       
 glutTimerFunc(50,timer,0);
}
 
int main(int argc, char **argv) {
 
    srand(time(0));
    
    for (int i=0;i<10;i++)
        m[i].New();
    
 
     s[i].x=10;
     s[i].y=10;
 
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB );
glutInitWindowSize (w, h);
glutCreateWindow ("Test"); 
glClearColor(1.0,1.0,0.6,1.0);  //цвет фона
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,w,0,h);
 
glutDisplayFunc (display);
glutSpecialFunc(KeyboardEvent);
glutTimerFunc(50,timer,0);
 
glutMainLoop();
}
При компиляции происходит ошибка:
1>------ Build started: Project: game, Configuration: Debug Win32 ------
1>Build started 06.12.2012 21:02:24.
1>InitializeBuildStatus:
1> Touching "Debug\game.unsuccessfulbuild".
1>ClCompile:
1> All outputs are up-to-date.
1>LINK : fatal error LNK1561: точка входа должна быть определена
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.95
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Ошибку гуглил, там написано, что функция должна быть не void, a int. Пытался что-то исправить - не получилось.
Прошу помочь найти ошибку. Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 21:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Точка входа должна быть определена (C++):

Точка входа должна быть определена - C++
Всем привет ,заранее прошу прощения за тему ,которая уже поднималась ,но вот возникла ошибка , LNK1561 точка входа должна быть...

Точка входа должна быть определена - C++
#include &lt;iostream&gt; using namespace std; template&lt;class T&gt; T min2(T a,T b) { return a&lt;b? a: b; } int main() ...

Точка входа должна быть определена - C++
Так как тупая проблема, спрашиваю в форуме для новичков. Я понимаю что смысл проблемы в том что нет или криво задан мэйн, но я не вижу тут...

Error Точка входа должна быть определена - C++
выводит такую ошибку, что делать? вот код #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;time.h&gt; using namespace...

Ошибка fatal error LNK1561: точка входа должна быть определена - C++
пробовал добавить библиотеку stdafx.h и менял тип main с void на int не помогает .... подскажите //BitSet.h #include&lt;iostream&gt; ...

CLR проект: error LNK1561: точка входа должна быть определена - C++
VS 2012 Кажется, глупость, но не могу разобраться Гуглил, выяснил, что нужно какой-то из main'ов добавить. вот только куда? в главный...

7
ThunderTeasers
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 3
03.01.2013, 15:29 #2
Здравствуйте, дело в том что ваша главная функция "int main(int argc, char **argv)" не возвращает никого значения, после "glutMainLoop();" напишите "return 0;".
Надеюсь что помог.
С уважением Максим.
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
03.01.2013, 15:40 #3
Цитата Сообщение от ThunderTeasers Посмотреть сообщение
Здравствуйте, дело в том что ваша главная функция "int main(int argc, char **argv)" не возвращает никого значения, после "glutMainLoop();" напишите "return 0;".
Надеюсь что помог.
С уважением Максим.
return mainа не обезателен,где то тут была тема что VS студия генерирует tmain(),а main не воспринимает, попробуйте заменить на tmain()
0
ThunderTeasers
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 3
03.01.2013, 18:03 #4
Чтобы она не генерировала, за своей писаниной надо следить, и если сказано что main должен возвращать 0 при удаче, значит надо сделать так, чтобы вернул.
Насчет проблемы: если это не помогает, значит покопайтесь в настройках проекта "Проект-> Свойства (имя проекта)".
С уважением Максим.

P.S. Проверил у себя, все работает.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
03.01.2013, 18:15 #5
Цитата Сообщение от ThunderTeasers Посмотреть сообщение
Чтобы она не генерировала, за своей писаниной надо следить, и если сказано что main должен возвращать 0 при удаче, значит надо сделать так, чтобы вернул.
В main return не обязателен. И так все вернется, читайте стандарт.
Если достигнут конец функции main и нет оператора возврата, эффект такой же, как при выполнении
C++
1
return 0;
Стандарт(2003, 2011 полной версии не имею):
A return statement in main has the effect of leaving the main function (destroying any objects with auto-
matic storage duration) and calling exit with the return value as the argument. If control reaches the end
of main without encountering a return statement, the effect is that of executing

C++
1
return 0;
Добавлено через 6 минут

Не по теме:

Цитата Сообщение от ThunderTeasers Посмотреть сообщение
Чтобы она не генерировала, за своей писаниной надо следить
Не про Си++ будет сказано. Тьма что генерируется

1
ThunderTeasers
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 3
03.01.2013, 20:08 #6
Да, согласен, компилятор вставит "return 0;" в конце программы, но это смотря какой компилятор, может и не вставить, а если не вставит вернет оно мусор который ни в коем случае нам не нужен, особенно в будущем.
Да и практика будет не очень если не писать return'ы, любая функция должна возвращать значение (кроме void разумеется) и ему, как начинающему программисту надо бы это учесть в своей работе в будущем.
По теме - автор нашлось решение то?
С уважением Максим.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
04.01.2013, 00:30 #7
То, что описывает стандарт должно выполняться, потому что это стандарт
И грош цена тому компилятору, который не соответствует стандарту 2003 (2011 еще добром нигде не реализован).

Добавлено через 17 минут
Если у Вас GUI проект, то и точка входа должна быть соответствующая, main - для консольных приложений.
0
2013
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 1
12.11.2015, 16:51 #8
спасибо
0
12.11.2015, 16:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2015, 16:51
Привет! Вот еще темы с ответами:

LINK : fatal error LNK1561: точка входа должна быть определена - C++
не как не могу понять в чём проблема. void subster(char v,char s,int n, int m) { int i,j; for(i=0,j=n-1; j&lt;(n-1+m); i++,j++) ...

ошибка:1>LINK : fatal error LNK1561: точка входа должна быть определена - C++
вот текст программы: #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;conio.h&quot; #include &quot;math.h&quot; #include &quot;stdio.h&quot; ...

Нужно исправить ошибку "Точка входа должна быть определена" в OGL - C++
#include&lt;Windows.h&gt; #include&lt;gl\GL.h&gt; int mian() { glBegin(GL_QUADS); glColor3f(1.0, 1.0, 1.0); glVertex2i(250, 450); ...

Ошибка компиляции "LINK : fatal error LNK1561: точка входа должна быть определена" - C++
Подскажите пожалуйста где ошибка. При компиляции выдает LINK : fatal error LNK1561: точка входа должна быть определена #include&lt;iostream&gt;...


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

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

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