Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > C++ не поддерживает int по умолчанию


Автор: baltushka 8.6.2009, 22:27
Моя вторая прога на С - пример из очередного учебника
Цитата

#include <iostream>
#include "stdafx.h"
#include <stdlib.h>
#include <gl/glut.h>
GLint Width = 512, Height = 512;
const int CubeSize = 200;

using namespace std;

void Display(void)
{
    int left, right, top, bottom;

    left  = (Width - CubeSize) / 2;
    right = left + CubeSize;
    bottom = (Height - CubeSize) / 2;
    top = bottom + CubeSize;

    glClearColor(0, 0, 0, 1);
    glClear(GL_COLOR_BUFFER_BIT);
    
    glColor3ub(255,0,0);
    glBegin(GL_QUADS);
      glVertex2f(left,bottom);
      glVertex2f(left,top);
      glVertex2f(right,top);
      glVertex2f(right,bottom);
    glEnd();

    glFinish();
}
void Reshape(GLint w, GLint h)
{
    Width = w;
    Height = h;

    /* устанавливаем размеры области отображения */
    glViewport(0, 0, w, h);

    /* ортографическая проекция */
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, w, 0, h, -1.0, 1.0);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}
void Keyboard(unsigned char key, int x, int y)
{
#define ESCAPE '\033'

    if( key == ESCAPE )
        exit(0);
}


main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB);
    glutInitWindowSize(Width, Height);
    glutCreateWindow("Red square example");

    glutDisplayFunc(Display);
    glutReshapeFunc(Reshape);
    glutKeyboardFunc(Keyboard);

    glutMainLoop();
}


компилятор выдает ошибку "C++ не поддерживает int по умолчанию". подскажите, как исправить??  
Заранее спасибо!!

Автор: 586 8.6.2009, 22:34
Какой средой программирования пользуешься?

Цитата(baltushka @  8.6.2009,  23:27 Найти цитируемый пост)
компилятор выдает ошибку "C++ не поддерживает int по умолчанию". подскажите, как исправить??  

поменяй у исходника расширение .cpp на .c

Добавлено через 2 минуты и 34 секунды
или исправь строку:
int main(int argc, char *argv[])

Автор: Курсант 8.6.2009, 22:36
Боюсь ошибиться, но это скорее всего значит что компилятор не может понять, какой тип данных использовать для объявляемых переменных, и говорит что по умолчанию сделать их типом int он не может. Объявите их явно...

А еще там должна быть строка, в которой у Вас ошибка, по этой строке можно найти Вашу причину... Те самые неправильно объявленные переменные...

ИМХО...

Добавлено через 49 секунд
на две минуты опоздал...

Автор: 586 8.6.2009, 22:52
Цитата(baltushka @  8.6.2009,  23:27 Найти цитируемый пост)
Моя вторая прога на С - пример из очередного учебника

Цитата(baltushka @  8.6.2009,  23:27 Найти цитируемый пост)
#include <iostream>

Цитата(baltushka @  8.6.2009,  23:27 Найти цитируемый пост)
using namespace std;

Ну и чего в проге на Си присутствуют C++ заголовки. Это уже прога на C++.
Исправь строку int main(int argc, char *argv[]) и ошибка исправится.

Автор: baltushka 8.6.2009, 22:55
Цитата(586 @  8.6.2009,  22:34 Найти цитируемый пост)
Какой средой программирования пользуешься?

 да, С++ в visual c++. Исправила, выдал кучу ошибок:

Цитата

1>Компоновка...
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glFinish@0 в функции "void __cdecl Display(void)" (?Display@@YAXXZ)
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glEnd@0 в функции "void __cdecl Display(void)" (?Display@@YAXXZ)
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glVertex2f@8 в функции "void __cdecl Display(void)" (?Display@@YAXXZ)
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glBegin@4 в функции "void __cdecl Display(void)" (?Display@@YAXXZ)
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glColor3ub@12 в функции "void __cdecl Display(void)" (?Display@@YAXXZ)
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glClear@4 в функции "void __cdecl Display(void)" (?Display@@YAXXZ)
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glClearColor@16 в функции "void __cdecl Display(void)" (?Display@@YAXXZ)
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glOrtho@48 в функции "void __cdecl Reshape(int,int)" (?Reshape@@YAXHH@Z)
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glLoadIdentity@0 в функции "void __cdecl Reshape(int,int)" (?Reshape@@YAXHH@Z)
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glMatrixMode@4 в функции "void __cdecl Reshape(int,int)" (?Reshape@@YAXHH@Z)
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glViewport@16 в функции "void __cdecl Reshape(int,int)" (?Reshape@@YAXHH@Z)
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutMainLoop@0 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutKeyboardFunc@4 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutReshapeFunc@4 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutDisplayFunc@4 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutCreateWindow@4 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInitWindowSize@8 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInitDisplayMode@4 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInit@8 в функции _main
1>C:\Projects\C++\first\Debug\first.exe : fatal error LNK1120: 19 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://c:\Projects\C++\first\first\Debug\BuildLog.htm"
1>first - ошибок 20, предупреждений 0

Автор: 586 8.6.2009, 23:04
Исходник у вас скомпилировался без ошибок. Ошибки выдаёт компановщик.
Нужно указать lib-файлы.
Код
#include <iostream>
#include "stdafx.h"
#include <stdlib.h>
#include <gl/glut.h>
#pragma comment (lib, "OpenGL32.lib")
#pragma comment (lib, "GLu32.lib")
#pragma comment (lib, "GLaux.lib")

Автор: baltushka 8.6.2009, 23:47
сорри, за долгий ответ, но опять ошибки!

Цитата

1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutMainLoop@0 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutKeyboardFunc@4 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutReshapeFunc@4 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutDisplayFunc@4 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutCreateWindow@4 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInitWindowSize@8 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInitDisplayMode@4 в функции _main
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInit@8 в функции _main
1>C:\Projects\C++\first\Debug\first.exe : fatal error LNK1120: 8 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://c:\Projects\C++\first\first\Debug\BuildLog.htm"
1>first - ошибок 9, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Автор: azesmcar 8.6.2009, 23:49
baltushka

Это ошибки линкера, подключите библиотеку glut в настройках проекта.

Автор: baltushka 9.6.2009, 00:01
Цитата(azesmcar @ 8.6.2009,  23:49)
baltushka

Это ошибки линкера, подключите библиотеку glut в настройках проекта.

Ох!! Мне кажется, я не умею(((((
А еще кажется, что ее попросту нет на моем компе, и что ее надо скачать дополнительно и что-то сделать с ней, дабы она была совместима с Borland.. это так??

Автор: andrew_121 9.6.2009, 00:04
Ужасно видеть отчет компилятора на русском))) Сразу теряешься. Не можешь понять, кто выдает такие ошибки, юзер перевел, или компилер инопланетный smile  smile  smile 
Сам до недавнего времени не знал про сущевствование русских версий сред разработки. Скачал недавно MSVS-2008 RUS, установил, ужаснулся, снес.
Это я так, не по теме, мысли вслух.

Автор: baltushka 9.6.2009, 00:07
andrew_121 ,
согласна, есть в этом что-то чуждое нашему менталиетту, да и не спасает "понятная" ругань((
А по теме что-нибудь можно?  smile 

Автор: andrew_121 9.6.2009, 00:07
Цитата(baltushka @  9.6.2009,  00:01 Найти цитируемый пост)
дабы она была совместима с Borland

А при чем тут Борланд? У тебя же Microsoft Visual Studio. Я правильно понял?

Автор: baltushka 9.6.2009, 00:10
Ой, да! Это мне на глаза из Delphi попалось  smile

Добавлено через 12 минут и 51 секунду
Я нашла glut.h, glut32.dll и glut32.lib и положила в lib и include\GL. Как программно подключить библиотеку?

Автор: Dmi3ev 9.6.2009, 00:24
Цитата

#include <iostream>
#include "stdafx.h"
#include <stdlib.h>
#include <gl/glut.h>
#pragma comment (lib, "OpenGL32.lib")
#pragma comment (lib, "GLu32.lib")
#pragma comment (lib, "GLaux.lib")

а еще можно качнуть
http://freeglut.sourceforge.net/index.php#download
хз, странно как-то, 
Цитата

пример из очередного учебника

обычно в них пишут, что надо сначала скачать вот это, вот это, а потом садиться... поэтому можно поискать ответ там

Автор: 586 9.6.2009, 00:29
#pragma comment (lib, "glut32.lib")

Автор: baltushka 9.6.2009, 00:33
Цитата(586 @ 9.6.2009,  00:29)
#pragma comment (lib, "glut32.lib")

Даа!! Подключила, заработало!!! Спасибо большое!!!!! Вы спасаете мою душу!! 

Автор: jhonyxakep 10.6.2009, 13:30
И это всё из-за библиотек? Не... Руские компилеры не буду никогда ставить!

Автор: mes 10.6.2009, 14:42
Цитата(jhonyxakep @  10.6.2009,  12:30 Найти цитируемый пост)
Не... Руские компилеры не буду никогда ставить! 

 smile  smile 

Автор: jonie 10.6.2009, 21:58
Цитата(baltushka @ 9.6.2009,  00:10)
Ой, да! Это мне на глаза из Delphi попалось  smile

Добавлено @ 00:22
Я нашла glut.h, glut32.dll и glut32.lib и положила в lib и include\GL. Как программно подключить библиотеку?

это вы их куда конкретно запихнули? в виндовсе не принято пихать свои библиотеки например в include папку студии... нужно положить их в подпапку программы например и установить опции проекта так, чтобы он эту папку включал в пути при компиляции и линковке...

Автор: porshegt3 28.1.2010, 21:01
а может надо объявлять не
Код

#include <iostream>

на
Код

#include <iostream.h>

?
Я читал что это имеет смысл...

Автор: andrew_121 28.1.2010, 22:21
Цитата(porshegt3 @  28.1.2010,  21:01 Найти цитируемый пост)
Я читал что это имеет смысл... 

имеет. только наоборот от того что вы читали.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)