Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
26 / 26 / 15
Регистрация: 17.02.2014
Сообщений: 310

Ошибка "Type mismatch in redeclaration of" при компиляции примера подключения OpenGL

29.07.2015, 23:04. Показов 3150. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу создать OpenGL программу, но постоянно какие-то ошибки (например [bcc32 Error] Unit1.cpp(21): E2356 Type mismatch in redeclaration of '__stdcall wglCreateContext(HDC__ *)').
http://www.gamedev.ru/code/articles/OpenGL_Delphi - делал согласно инструкциям этого сайта
Unit1.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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
void FormResize(TObject *Sender);
BOOL bSetupPixelFormat(HDC hdc);
HGLRC wglCreateContext(HDC hdc);
BOOL wglMakeCurrent(HDC hdc, HGLRC hglrc);
 
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction & Action)
{
        if(ghRC)
        {
          wglMakeCurrent(ghDC,0);
          wglDeleteContext(ghRC);
        }
        if(ghDC)
          ReleaseDC(Handle, ghDC);
}
 
void FormResize(TObject *Sender)
{
    glViewport( 0, 0, Width, Height );
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    glOrtho(-5,5, -5,5, 2,12);
    gluLookAt(0,0,5, 0,0,0, 0,1,0);
    glMatrixMode( GL_MODELVIEW );
}
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
         ghDC = GetDC(Handle);
         if (!bSetupPixelFormat(ghDC))
            Close();
         ghRC = wglCreateContext(ghDC);
         wglMakeCurrent(ghDC, ghRC);
         glClearColor(0.0, 0.0, 0.0, 0.0);
         FormResize(Sender);
         glEnable(GL_COLOR_MATERIAL);
         glEnable(GL_DEPTH_TEST);
         glEnable(GL_LIGHTING);
         glEnable(GL_LIGHT0);
           float p[4]={3,3,3,1},
                 d[3]={-1,-1,-3};
         glLightfv(GL_LIGHT0,GL_POSITION,p);
         glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,d);
}
 
BOOL bSetupPixelFormat(HDC hdc)
      {
          PIXELFORMATDESCRIPTOR pfd, *ppfd;
          int pixelformat;
          ppfd = &pfd;
          ppfd->nSize = sizeof(PIXELFORMATDESCRIPTOR);
          ppfd->nVersion = 1;
          ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
          ppfd->dwLayerMask = PFD_MAIN_PLANE;
          ppfd->iPixelType = PFD_TYPE_RGBA;
          ppfd->cColorBits = 16;
          ppfd->cDepthBits = 16;
          ppfd->cAccumBits = 0;
          ppfd->cStencilBits = 0;
          if ((pixelformat = ChoosePixelFormat(hdc, ppfd)) == 0)
          {
              MessageBox(NULL, "ChoosePixelFormat failed", "Error",
        MB_OK);
              return FALSE;
          }
          if (SetPixelFormat(hdc, pixelformat, ppfd) == FALSE)
          {
              MessageBox(NULL, "SetPixelFormat failed", "Error",
        MB_OK);
              return FALSE;
          }
          return TRUE;
      }
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
                  Draw();
}
//---------------------------------------------------------------------------
      void TForm1.Draw()
      {
        glClear(GL_DEPTH_BUFFER_BIT xor GL_COLOR_BUFFER_BIT);
        GLUquadricObj *quadObj;
        quadObj:=gluNewQuadric();
        gluQuadricDrawStyle(quadObj, GLU_FILL);
        glColor3f(1,0,0);
        gluSphere(quadObj, 2,10,10);
          glRotatef(3, 0,1,0);
        gluDeleteQuadric(quadObj);
        SwapBuffers(ghDC);
      }
Unit1.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
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TTimer *Timer1;
    void __fastcall Timer1Timer(TObject *Sender);
private:    // User declarations
    HGLRC ghRC;
    HDC   ghDC;
    void Draw();
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Помогите создать OpenGL программа, если у вас есть пустой OpenGL cpp и h файл скиньте пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.07.2015, 23:04
Ответы с готовыми решениями:

Ошибка "Type mismatch in redeclaration of" при компиляции программы
Реализую итерационный мгуа и выдает такую ошибку Type mismatch in redeclaration of подскажите может кто понимает что не так? ...

Ошибка при компиляции redeclaration of C++ built-in type 'wchar_t' [-fpermissive]?
Подключил glut к codeblock при компиляция выдает redeclaration of C++ built-in type 'wchar_t' Как это можно исправить? Код программы ...

Ошибка компиляции примера SFML + OpenGL в MinGW
проблема компиляции (путь прописан в системе до компилятора правильно) компил через ком. строку ~~g++ 0000.cpp In file included...

5
Модератор
 Аватар для vxg
3409 / 2184 / 354
Регистрация: 13.01.2012
Сообщений: 8,462
30.07.2015, 09:37
уберите это
C++
1
2
HGLRC wglCreateContext(HDC hdc);
BOOL wglMakeCurrent(HDC hdc, HGLRC hglrc);
из своего модуля.
1
26 / 26 / 15
Регистрация: 17.02.2014
Сообщений: 310
30.07.2015, 15:21  [ТС]
vxg, не помогло [bcc32 Error] Unit1.cpp(25): E2316 '_fastcall TForm1::FormClose(TObject *,TCloseAction &)' is not a member of 'TForm1'
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
30.07.2015, 17:14
В h-файле:
C++
1
2
__published:    // IDE-managed Components
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
1
26 / 26 / 15
Регистрация: 17.02.2014
Сообщений: 310
30.07.2015, 17:30  [ТС]
gunslinger,
здесь ошибок очень много ~30, не думаю что по одной ошибке его можно исправить, поэтому лучше если вас есть уже готовые файлы скиньте
[bcc32 Error] Unit1.cpp(47): E2316 '_fastcall TForm1::FormCreate(TObject *)' is not a member of 'TForm1'
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
30.07.2015, 18:50
Цитата Сообщение от user-men Посмотреть сообщение
не думаю что по одной ошибке его можно исправить
Вот и я не думаю, что стоит что-либо исправлять. Какого ты по одной ошибке выкладываешь, если тебе уже сейчас известно, что их около 30? Посты что-ли набиваешь? Или троллить вздумал?

Не зная элементарного (в частности - как создать обработчик события в дизайнере, для этого недостаточно просто скопипастить реализацию, нужно еще прописать все прототипы методов в классе формы и связать метод с событием на вкладке Events) собираешься работать с OpenGL? Ну-ну...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.07.2015, 18:50
Помогаю со студенческими работами здесь

Ошибка type mismatch при setlength
var a:array of integer; b:array of integer; c:array of integer; m,n,i,j:integer; flag:boolean; begin ...

Ошибка Type Mismatch при большом количестве элементов массива
Добрый день! В очередной раз прошу помощи у умов форума. Пытаюсь проверить какая сортировка быстрее отсортирует большие объемы данных...

Ошибка при фильтрации шаблон like tclientdataset type mismatch in expression
Помогите! Форума не нашел ответ. Ошибка при фильтрации шаблон like tclientdataset type mismatch in expression. Таблица я создал с...

Ошибка при компиляции 'Type-declaration character does not match declared data type.'
Не могу понять почему на строке sInfo = Left$(sInfo, iPos - 1) при попытке компиляции выдается ошибка 'Type-declaration character does...

Ошибка при компиляции примера
Я начинаю учить ассемблер по книге О. А. Калашникова &quot;Ассемблер Это просто&quot;(второе издание) Там в качестве первого примера программы...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru