Здание мерцало на окнах с mingw32

Это дубликат, и я сожалею об этом, но у меня нет других вариантов, потому что я не могу комментировать ответы, и они не решили мою проблему. Вот оригинальный пост:

Здание мерцало на окнах с минг

И вот моя проблема:

1) Когда я пытаюсь ответить @LightningIsMyName, я получаю эту ошибку:

Makefile: 1: *** отсутствует разделитель. Стоп.

2) Когда я пытаюсь ответить @anon, я получаю эту ошибку:

Makefile: 1: Makefile:1: *** команды начинаются до первой цели. Стоп.

Люди говорят, что это помогло им, но они не работали на меня. Я извиняюсь, что дублирую вопрос, но у меня нет другого шанса с ограничением репутации для комментариев. Надеюсь, вы поможете. Благодарю.

3 ответа

Решение

Я слишком много искал в сети, чтобы найти ответ на свои проблемы. Я потратил немного времени, поэтому я публикую это здесь, чтобы помочь другим.

Чтобы заставить GLEW работать с MinGW, вы должны скачать исходный код с сайта GLEW и поставить

gcc.exe из MinGW \ bin
ar.exe из MinGW32\mingw32\bin

в исходную папку GLEWs и создайте и запустите.bat в этой папке следующим образом:

gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude  -DGLEW_BUILD -o src/glew.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a    -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32
ar cr lib/libglew32.a src/glew.o

gcc -DGLEW_NO_GLU -DGLEW_MX -O2 -Wall -W -Iinclude  -DGLEW_BUILD -o src/glew.mx.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32mx.dll -Wl,--out-implib,lib/libglew32mx.dll.a -o lib/glew32mx.dll src/glew.mx.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32
ar cr lib/libglew32mx.a src/glew.mx.o

Вы получите ваши файлы.dll и.a в папке lib. Поместите файлы.dll в папку system32 и файлы.a в папку lib MinGW.

При связывании ссылки сначала библиотеки SFML, затем ссылка GLEW и, наконец, ссылка OpenGL. Если вы измените порядок ссылок, вы получите ошибку компоновщика.

Не забудьте вызвать glewInit() после создания вашего окна.

Попробуйте эти команды:
1: gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.o -c src/glew.c
2: gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32
3: ar cr lib/libglew32.a src/glew.o

Если вы можете заставить его работать таким образом, попробуйте мой (для компиляторов Borland):

  1. скачать исходный код GLEW (не двоичные файлы)

    • glew.c Мой исходный код ~ 900 КБ (я думаю, GLEW 1.6)
    • glew.h мой заголовок ~900KB (я думаю, GLEW 1.6)
  2. Я использую локальный путь проекта для хранения GLEW

    Я знаю, что это избыточно, но мне не нужно вносить изменения после системных изменений, таких как переустановка ОС или новая версия компилятора и т. Д., Но чтобы это работало, вам нужно внести некоторые изменения внутри glew.c:

    • менять #include <glew.h> в #include "glew.h"

    если вы хотите использовать глобальный путь, добавьте его в свой компилятор, скопируйте туда файлы и оставьте <> так же как и

  3. скопируйте эти 2 файла в ваш проект

    Вот как правильно включить его в проект, просто добавьте его в ваш основной исходный файл (где находится ваш winmain или основная функция):

    #include <windows.h> // optional windows
    #include <math.h>    // optional
    #define GLEW_STATIC  // this configure header and source of GLEW to compile correctly 
    #include "glew.c"    // header is included inside so no need to duplicate include
    // here are the OpenGL includes like: gl.h,glext.h,....
    
  4. Теперь должно работать

    не забудьте позвонить glewInit(); после инициализации OpenGL и перед использованием любого расширения...

Другие вопросы по тегам