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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 5.00
florgas
 Аватар для florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 339
06.12.2012, 21:03     Точка входа должна быть определена #1
Всем привет. На 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. Пытался что-то исправить - не получилось.
Прошу помочь найти ошибку. Заранее благодарен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ThunderTeasers
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 3
03.01.2013, 15:29     Точка входа должна быть определена #2
Здравствуйте, дело в том что ваша главная функция "int main(int argc, char **argv)" не возвращает никого значения, после "glutMainLoop();" напишите "return 0;".
Надеюсь что помог.
С уважением Максим.
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 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()
ThunderTeasers
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 3
03.01.2013, 18:03     Точка входа должна быть определена #4
Чтобы она не генерировала, за своей писаниной надо следить, и если сказано что main должен возвращать 0 при удаче, значит надо сделать так, чтобы вернул.
Насчет проблемы: если это не помогает, значит покопайтесь в настройках проекта "Проект-> Свойства (имя проекта)".
С уважением Максим.

P.S. Проверил у себя, все работает.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11816 / 6795 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 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 Посмотреть сообщение
Чтобы она не генерировала, за своей писаниной надо следить
Не про Си++ будет сказано. Тьма что генерируется

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

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

C++ Точка входа должна быть определена
Нужно исправить ошибку "Точка входа должна быть определена" в OGL C++
Ошибка fatal error LNK1561: точка входа должна быть определена C++

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

Или воспользуйтесь поиском по форуму:
2013
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 1
12.11.2015, 16:51     Точка входа должна быть определена #8
спасибо
Yandex
Объявления
12.11.2015, 16:51     Точка входа должна быть определена
Ответ Создать тему

Метки
входа, должна, определена, точка
Опции темы

Текущее время: 02:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru