Если в программе написать: #include <GL/glew.h> #include <GL/glut.h> то программа не соберётся по причине ошибочного развёртывания при определении макроса GLUTAPIENTRY. В GL/glut.h он определяется как #define GLUTAPIENTRY GLAPIENTRY Но макрос GLAPIENTRY удаляется в GL/glew.h: #undef GLAPIENTRY Дополнительное подключение GL/gl.h и GL/glu.h не помогает, так как GL/glew.h в себе вызывает GL/glu.h, который вызывает GL/gl.h. Решения 2: 1. В программах для ALTLinux принудительно вставлять такой код (пример: enblend-3.0): #include <GL/glew.h> #define GLAPIENTRY #include <GL/glut.h> 2. Пропатчить GL/glew.h, чтобы он сохранял состояние GLAPIENTRY, полученное после вызова GL/glu.h: #include <GL/glu.h> #define GLAPIENTRY_GL GLAPIENTRY и вместо #undef GLAPIENTRY написать #undef GLAPIENTRY #define GLAPIENTRY GLAPIENTRY_GL Steps to Reproduce: Программа вида #include <GL/glew.h> #include <GL/glut.h> Actual Results: Собирается с ошибкой Expected Results: Сборка нормальная
*** Bug 10835 has been marked as a duplicate of this bug. ***
*** Bug 10829 has been marked as a duplicate of this bug. ***
I'd prefer #2. Could you please provide a patch?
(In reply to comment #3) > I'd prefer #2. > > Could you please provide a patch? Патч, который я вижу, прикладывается к исходникам.
Created attachment 1801 [details] Fix problem when using GLEW and GLUT together.
Fixed in glew-1.3.5-alt2, going to i/S.
Работает? Если да, то закрывайте.
(In reply to comment #7) > Работает? Если да, то закрывайте. Выяснилась одна проблема: оказывается, компилятор не сразу формирует define, а только при использовании его в обычной программе. Пример: #define TEST1 5 #define TEST2 TEST1 #undef TEST1 int a = TEST2; приведёт к получению ошибки при компиляции из-за того, что в результате будет получен код: int a = TEST1; а не int a = 5; То есть предложенное мною решение на самом деле не является таковым. Пока в голове крутится только удаление строк в GL/glew.h: #undef APIENTRY #undef GLAPIENTRY когда в конце файла идёт чистка всего и вся. Патч для glew я приведу, но прошу перед применением давайте вдвоём обмозгуем, я мог что-нибудь пропустить.
Created attachment 1863 [details] Changes to glew.h from 1.3.6-alt1
Пересборка с таким libglew-devel что-либо проясняет? Возможно, имеет смысл даже погонять ее клиентов.
Это еще актуально?
Попробую на выходных проверить, тогда отпишусь.
На выходных какого года? :) libglew-devel-1.5.6-alt1 и libfreeglut-devel-2.6.0-alt1 либо libGLUT-devel-7.8.3-alt1 не вызывают проблем по крайней мере при сборке: #include <stdio.h> #include <GL/glew.h> #include <GL/glut.h> int main(void) { printf("Hello, World!\n"); return 0; }