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

Ошибка библиотеки в коде программы?:) - C++

Восстановить пароль Регистрация
 
florgas
 Аватар для florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 339
01.01.2013, 14:33     Ошибка библиотеки в коде программы?:) #1
Всем привет. Вот этот код компилируется без ошибок и все работает
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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
#include <windows.h>
#include <gl\GLU.h>
#include <gl\GL.h>
#include <time.h>
#include <math.h>
#include "glaux.h"
#include <cstdio>
 
#pragma comment (lib,"opengl32.lib")
#pragma comment (lib,"glu32.lib")
#pragma comment (lib, "glaux.lib")
 
HWND    hWnd; // - дескриптор окна
HDC     hDC; //- контекст устройства
HGLRC   hRC; //- контекст рендеринга
float CANNON_ROTATE = 1;
 
 
GLuint  texture;
int alpha = 0, beta = 0;
 
double ax = 0, ay = 0, az = 10;
double ex = 0, ey = 0, ez = 10;
double cx = 0, cy = 0, cz = 0;
 
 
bool  keys[256];                // Массив, используемый для операций с клавиатурой
 
  
 
// Set up pixel format for graphics initialization
void SetupPixelFormat()
{
    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; // Формат для Окна | Формат для OpenGL | Формат для двойного буфера
    ppfd->dwLayerMask = PFD_MAIN_PLANE; // Главный слой рисования
    ppfd->iPixelType = PFD_TYPE_COLORINDEX; // формат пикселов
    ppfd->cColorBits = 16; // размер цвета, количество бит на один пиксел
    ppfd->cDepthBits = 16; // размер буфера глубины
    ppfd->cAccumBits = 0; // общее число битовых плоскостей в буфере 
    ppfd->cStencilBits = 0; // глубина буфера трафарета
 
    pixelformat = ChoosePixelFormat(hDC, ppfd);
    SetPixelFormat(hDC, pixelformat, ppfd);
}
 
GLuint LoadTGA(const char *fmt, ...)
{
    char filename[256];
    va_list ap;
    va_start(ap, fmt);
    vsprintf_s(filename, fmt, ap);
    va_end(ap);
 
    GLuint texture;
    GLubyte        TGAheader[12]={0,0,2,0,0,0,0,0,0,0,0,0};        // Uncompressed TGA Header
    GLubyte        TGAcompare[12];                                    // Used To Compare TGA Header
    GLubyte        header[6];                                        // First 6 Useful Bytes From The Header
    GLuint        bytesPerPixel;                                    // Holds Number Of Bytes Per Pixel Used In The TGA File
    GLuint        imageSize;                                        // Used To Store The Image Size When Setting Aside Ram
    GLuint        temp;                                            // Temporary Variable
    GLuint        type=GL_RGBA;                                    // Set The Default GL Mode To RBGA (32 BPP)
 
    GLubyte    *imageData;                                            // Image Data (Up To 32 Bits)
    GLuint    bpp;                                                // Image Color Depth In Bits Per Pixel.
    GLuint    width;                                                // Image Width
    GLuint    height;
 
 
    FILE *file = fopen(filename, "rb");                            // Open The TGA File
    
    fread(TGAcompare,1,sizeof(TGAcompare),file);
    fread(header,1,sizeof(header),file);
 
    width  = header[1] * 256 + header[0];                // Determine The TGA Width    (highbyte*256+lowbyte)
    height = header[3] * 256 + header[2];                // Determine The TGA Height    (highbyte*256+lowbyte)
    
    bpp    = header[4];                                // Grab The TGA's Bits Per Pixel (24 or 32)
    bytesPerPixel    = bpp/8;                            // Divide By 8 To Get The Bytes Per Pixel
    imageSize        = width*height*bytesPerPixel;    // Calculate The Memory Required For The TGA Data
 
    imageData=(GLubyte *)malloc(imageSize);            // Reserve Memory To Hold The TGA Data
 
    fread(imageData, 1, imageSize, file);
 
    for(GLuint i=0; i<int(imageSize); i+=bytesPerPixel)            // Loop Through The Image Data
    {                                                            // Swaps The 1st And 3rd Bytes ('R'ed and 'B'lue)
        temp=imageData[i];                                // Temporarily Store The Value At Image Data 'i'
        imageData[i] = imageData[i + 2];        // Set The 1st Byte To The Value Of The 3rd Byte
        imageData[i + 2] = temp;                        // Set The 3rd Byte To The Value In 'temp' (1st Byte Value)
    }
 
    fclose (file);                                                // Close The File
 
    glGenTextures(1, &texture);                        // Generate OpenGL texture IDs
 
    glBindTexture(GL_TEXTURE_2D, texture);                // Bind Our Texture
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);    // Linear Filtered
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);    // Linear Filtered
    
    if (bpp==24)                                        // Was The TGA 24 Bits
    {
        type=GL_RGB;                                            // If So Set The 'type' To GL_RGB
    }
 
    glTexImage2D(GL_TEXTURE_2D, 0, type, width, height, 0, type, GL_UNSIGNED_BYTE, imageData);
 
    return texture;
}
 
GLuint LoadBMP(const char *fmt, ...)
{
    GLuint t;
    char filename[256];
    va_list ap;
    va_start(ap, fmt);
    vsprintf_s(filename, fmt, ap);
    va_end(ap);
 
    AUX_RGBImageRec *texture = auxDIBImageLoadA(filename);
    glGenTextures(1, &t);
    glBindTexture(GL_TEXTURE_2D, t);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture->sizeX, texture->sizeY, 0,
    GL_RGB, GL_UNSIGNED_BYTE, texture->data);
    
    return t;   
}
 
// Initialize OpenGL graphics
void InitGraphics()
{
    hDC = GetDC(hWnd); //Определяем, что контекстом устройства будет  наше окно
 
    SetupPixelFormat();
 
    hRC = wglCreateContext(hDC); //здесь создаем контекст рендеринга
    wglMakeCurrent(hDC, hRC); //теперь активируем и связываем контекст рендеринга и контекст устройства
 
    glClearColor(1, 1, 1, 0.5); //цвет фона
    glClearDepth(1.0); // Разрешить очистку буфера глубины
    glEnable(GL_DEPTH_TEST); //включить тест глубины
//  glEnable (GL_TEXTURE_2D);
 
   texture = LoadBMP("wall1.bmp");
}
 
// Resize graphics to fit window
void ResizeGraphics()
{
    // Get new window size
    RECT rect;
    int width, height;
    GLfloat aspect;
 
    GetClientRect(hWnd, &rect);
    width = rect.right;
    height = rect.bottom;
    aspect = (GLfloat)width / height; // Вычисление соотношения геометрических размеров для окна
 
    // Adjust graphics to window size
    glViewport(0, 0, width, height); //  Сброс текущей области вывода 
    glMatrixMode(GL_PROJECTION);  // Выбор матрицы проекций
    glLoadIdentity();  // восстанавливает выбранную матрицу в первоначальное состояние
    gluPerspective(45.0, aspect, 1.0, 100.0);
//  gluOrtho2D(0, 0, 50.0, 50.0);
    gluLookAt(ex, ey, ez, cx, cy, cz, 0, 10, 0);
 
    glMatrixMode(GL_MODELVIEW); // Выбор матрицы вида модели
}
 
 
float gamer_x=0, gamer_y=0, gamer_z=0, mob_x=0, mob_y=0, mob_z=0;
 
void display(void) { 
//glClear (GL_COLOR_BUFFER_BIT);
 
/* Игрок */ 
glColor3f (1.0, 1.0, 1.0); 
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);
glBegin(GL_POLYGON); 
glTexCoord2d(0, 0); glVertex3f (gamer_x, gamer_y, gamer_z + 0.0); 
glTexCoord2d(1, 0); glVertex3f (gamer_x + 0.3, gamer_y, gamer_z + 0.0); 
glTexCoord2d(1, 1); glVertex3f (gamer_x + 0.3, gamer_y + 0.3, gamer_z + 0.0); 
glTexCoord2d(0, 1); glVertex3f (gamer_x, gamer_y + 0.3, gamer_z + 0.0);
glEnd();
 
/* Противники */
 
glColor3f (0.0, 0.0, 0.0); 
glBegin(GL_POLYGON); 
glVertex3f (mob_x + 0.22, mob_y + 0.22, mob_z + 0.0); 
glVertex3f (mob_x + 0.25, mob_y + 0.22, mob_z + 0.0); 
glVertex3f (mob_x + 0.25, mob_y + 0.25, mob_z + 0.0); 
glVertex3f (mob_x + 0.22, mob_y + 0.25, mob_z + 0.0);
glEnd();
//glutSwapBuffers();
} 
 
// Draw frame
void DrawGraphics()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //очищаем буфер цвета и буфер глубины
    glLoadIdentity();  // Сброс просмотра
    glTranslated(0, 0, 5);
    
    display();
 
    SwapBuffers(hDC); // эта команда выводит содержимого буфера на экран 
                      
}
void KeyDown(int ikey)
{
    
    /*switch(ikey)
    {
    case VK_DOWN:
        if(CANNON_ROTATE <= 1.5)
            CANNON_ROTATE+=0.1;
        break;
    case VK_UP:
        if(CANNON_ROTATE >= 0)
            CANNON_ROTATE-=0.1;
        break;
    case 32:
        if(ball.GO == 0)
            ball.INIT(sin(CANNON_ROTATE), cos(CANNON_ROTATE));
        break;
    }*/
 
 
}
// Handle window events and messages
LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM  wParam, LPARAM  lParam)
{
    switch (uMsg)
    {
    case WM_SIZE:
        ResizeGraphics();
        break;
 
    case WM_CLOSE: 
        DestroyWindow(hWnd);
        break;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    case WM_KEYDOWN:            // Была ли нажата кнопка?
    {
      keys[wParam] = true;          // Если так, мы присваиваем этой ячейке true
      KeyDown(wParam);
      return 0;            // Возвращаемся
    }
    case WM_KEYUP:              // Была ли отпущена клавиша?
    {
      keys[wParam] = false;          //  Если так, мы присваиваем этой ячейке false
      return 0;            // Возвращаемся
    }
    // Default event handler
    default: 
        return DefWindowProc (hWnd, uMsg, wParam, lParam); 
        break; 
    } 
 
    return 1; 
}
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
 
    const LPCWSTR appname = TEXT("OpenGL Sample");
 
    WNDCLASS wndclass;
    MSG      msg;
 
    // Define the window class
    wndclass.style         = 0;
    wndclass.lpfnWndProc   = (WNDPROC)MainWndProc;
    wndclass.cbClsExtra    = 0;
    wndclass.cbWndExtra    = 0;
    wndclass.hInstance     = hInstance;
    wndclass.hIcon         = LoadIcon(hInstance, appname);
    wndclass.hCursor       = LoadCursor(NULL,IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wndclass.lpszMenuName  = appname;
    wndclass.lpszClassName = appname;
 
    // Register the window class
    if (!RegisterClass(&wndclass)) return FALSE;
 
    // Create the window
    hWnd = CreateWindow(
            appname,
            appname,
            WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            1200,
            800,
            NULL,
            NULL,
            hInstance,
            NULL);
 
    if (!hWnd) return FALSE;
 
    // Initialize OpenGL
    InitGraphics();
 
    // Display the window
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
 
    // Event loop
    while (1)
    {
        if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) == TRUE)
        {
            if (!GetMessage(&msg, NULL, 0, 0)) return TRUE;
 
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        DrawGraphics();
    }
 
    wglDeleteContext(hRC);
    ReleaseDC(hWnd, hDC);
}
Но следующий код, с теми же подключенными библиотеками и с той же прагмой выдает ошибку библиотеки glaux.lib (1>Main.cpp(6): fatal error C1083: Cannot open include file: 'glaux.h': No such file or directory).
В чем такая избранность может быть?
Почему в первом коде такой ошибки не происходит?
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
#include <windows.h>
#include <gl\GLU.h>
#include <gl\GL.h>
#include <time.h>
#include <math.h>
#include "glaux.h"
#include <cstdio>
 
#pragma comment (lib,"opengl32.lib")
#pragma comment (lib,"glu32.lib")
#pragma comment (lib, "glaux.lib")
int dir;
float gamer_x=0, gamer_y=0, gamer_z=0, mob_x=0.03, mob_y=0.03, mob_z=0.03, ColorMobR=0.0, ColorMobG=0.0, ColorMobB=0.0;
GLuint gamingtxt;
 
GLuint LoadBMP(const char *fmt, ...)
{
    GLuint t;
    char filename[256];
    va_list ap;
    va_start(ap, fmt);
    vsprintf_s(filename, fmt, ap);
    va_end(ap);
 
    AUX_RGBImageRec *texture = auxDIBImageLoadA(filename);
    glGenTextures(1, &t);
    glBindTexture(GL_TEXTURE_2D, t);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture->sizeX, texture->sizeY, 0,
    GL_RGB, GL_UNSIGNED_BYTE, texture->data);
    
    return t;    
}
 
void display(void) { 
glClear (GL_COLOR_BUFFER_BIT);
/* Игрок */ 
glColor3f (1.0, 1.0, 1.0); 
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, gamingtxt);
glBegin(GL_POLYGON); 
glTexCoord2d(0, 0); glVertex3f (gamer_x, gamer_y, gamer_z + 0.0); 
glTexCoord2d(1, 0); glVertex3f (gamer_x + 0.03, gamer_y, gamer_z + 0.0); 
glTexCoord2d(1, 1); glVertex3f (gamer_x + 0.03, gamer_y + 0.03, gamer_z + 0.0); 
glTexCoord2d(0, 1); glVertex3f (gamer_x, gamer_y + 0.03, gamer_z + 0.0);
glEnd();
 
/* Противники */
glColor3f (ColorMobR, ColorMobG, ColorMobB); 
glBegin(GL_POLYGON); 
glVertex3f (mob_x + 0.22, mob_y + 0.22, mob_z + 0.0); 
glVertex3f (mob_x + 0.25, mob_y + 0.22, mob_z + 0.0); 
glVertex3f (mob_x + 0.25, mob_y + 0.25, mob_z + 0.0); 
glVertex3f (mob_x + 0.22, mob_y + 0.25, mob_z + 0.0);
glEnd();
glDisable(GL_TEXTURE_2D);
glutSwapBuffers();
} 
 
/* Движение мобов */
void MobMotion(){
    int RandomNumber = rand()%4;
    switch(RandomNumber)
    {
        case 0 :  mob_x-=0.01; break;
        case 1 :  mob_y+=0.01; break;
        case 2 :  mob_x+=0.01; break;        
        case 3 :  mob_y-=0.01; break;
    }
}
 
/* Пересечение игрока и моба */
void GamerOnMob(){
    if(fabs(gamer_x-mob_x) < 0.01 && fabs(gamer_y - mob_y) < 0.01){
                    ColorMobR = 1.0;
                }
}
 
/* Ограничение перемещения размерами экрана */
void Screen(){
    if(gamer_x>0.97){
            gamer_x = 0.97;
            }
    if(gamer_x<-1){
            gamer_x = -1;
            }
    if(gamer_y>0.97){
            gamer_y = 0.97;
            }
    if(gamer_y<-1){
            gamer_y = -1;
            }
    if(mob_x>0.97){
            mob_x = 0.97;
            }
    if(mob_x<-1){
            mob_x = -1;
            }
    if(mob_y>0.97){
            mob_y = 0.97;
            }
    if(mob_y<-1){
            mob_y = -1;
            }           
}
 
/* Функция времени */
void Timer(int){
    display();
    Screen();
    GamerOnMob();
    glutTimerFunc(10, Timer, 0);
}
 
/* Функция времени мобов*/
void TimerMob(int){ 
    //MobMotion();
    glutTimerFunc(100, TimerMob, 0);
}
 
/* Функция считывания нажатия клавиш и перемещения игрока */
void KeyboardEvent(int key, int a, int b)
{   
    switch(key)
    {
        case 100 :  gamer_x-=0.01; break;
        case 101 :  gamer_y+=0.01; break;
        case 102:   gamer_x+=0.01; break;        
        case 103 :  gamer_y-=0.01; break;
    }
}
 
/* Определим параметры окна */ 
int main(int argc, char** argv) 
{ 
glutInit(&argc, argv); 
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); 
glutInitWindowSize (800, 800); 
glutInitWindowPosition (100, 100); 
glutCreateWindow ("Game v0.1"); 
glClearColor (0.0,0.4,0.0,0.0); 
gamingtxt = LoadBMP("texture.bmp");
glutDisplayFunc(display); 
glutTimerFunc(10, Timer, 0);
glutTimerFunc(100, TimerMob, 0);
glutSpecialFunc(KeyboardEvent);
glutMainLoop(); 
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
01.01.2013, 17:48     Ошибка библиотеки в коде программы?:) #2
C++
1
#include <GL\glaux.h>
оттак надо

Добавлено через 35 секунд
Ну или законуть глаукс в папку с сорцом
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
01.01.2013, 18:00     Ошибка библиотеки в коде программы?:) #3
Как вроде я помню в буилдере нет glax и glut нужно качать и прикручивать
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
01.01.2013, 18:44     Ошибка библиотеки в коде программы?:) #4
Avazart, ТС не указал компилер. в мин гв глаукс идет в комплекте. Глаукс это виндовская багофича
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
02.01.2013, 01:07     Ошибка библиотеки в коде программы?:) #5
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Avazart, ТС не указал компилер. в мин гв глаукс идет в комплекте. Глаукс это виндовская багофича
Прощу прощения ... забылся...
Yandex
Объявления
02.01.2013, 01:07     Ошибка библиотеки в коде программы?:)
Ответ Создать тему
Опции темы

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