Построение GLEW 1.7.0 на Windows с помощью MinGW

это было задано довольно много раньше:как скомпилировать источник GLEW 1.7.0 в Windows с помощью MinGW? цель состоит в том, чтобы динамически связываться с библиотекой из проекта c++.

подробнее: я работаю с QtCreator, использовать эрго qmake для сборки. Я на Windows 7. К настоящему времени я пробовал / посмотрел следующие ссылки.

использовать размещенный пакетный файл также попытался заменить gcc на g++

статический с vc++ libs, построить dll.повторное использование vc++ .dll файлы

получить MSYS run поставляется makefile

информация о начальных проблемах

простой материал с использованием двоичных файлов GLEW msvc++, работает на моем рабочем столе

к сожалению, все опубликованные решения заканчиваются следующими сообщениями об ошибках для меня, когда я использую скомпилированные результаты в своем проекте:

undefined reference to `glDrawElements@16'
debug/Ex04.o: In function `Z6initGLv':
undefined reference to `glClearColor@16'
undefined reference to `glEnable@4'
debug/Ex04.o: In function `Z8updateGLv':
undefined reference to `glClear@4'
undefined reference to `glViewport@16'
collect2: ld returned 1 exit status
mingw32-make.exe[1]: *** [debug/ecg4.exe] Error 1
mingw32-make.exe: *** [debug] Error 2

Я нахожусь в конце моего ума по этому вопросу. Я двойной и тройной проверил путь LIBS в qmake и переменную пути windows, чтобы включить каталог, где живут dll glew. Также INCLUDEPATH qmake'ом должно быть нормально. Здесь тропы .про файл так:

LIBS += -L$$quote(C:/mypath/freeglut/lib/) -lfreeglut
LIBS += -L$$quote(C:/mypath/glew-1.7.0/lib/) -lglew32 -lglew32mx
#LIBS+= C:/mypath/glew-1.7.0/lib/libglew32.dll.a
#LIBS+= C:/Programming/glew-1.7.0/lib/libglew32mx.dll.a

#includepath for project and the required libraries
INCLUDEPATH += ./include
INCLUDEPATH += "C:/mypath/glew-1.7.0/include"
INCLUDEPATH += "C:/mypath/freeglut/include"

Итак, есть ли кто-то, кто может дать надежный набор инструкций о том, как получить источник GLEW 1.7.0, скомпилированный с MinGW?

1 ответов


хорошо, я решил это.

в основном я скомпилировал GLEW правильно, насколько я могу видеть. Я забыл добавить -lopengl32-lglu32 к пути LIBS в моем проекте. По какой-то причине мне нужно сделать это в моей системе Qt/MinGW/Windows. На моем рабочем столе: Qt / VC++ / Windows мне не нужно этого делать. У кого-нибудь есть объяснение этому?

для тех, кто натыкается на ту же проблему:

  1. скачать источник (.зип) от GLEW Домашняя страница
  2. скомпилируйте источник, есть разные способы (ср. ссылки в начальном вопросе)
    - >см. внизу (старый пакетный файл больше не находится на github)
  3. поставить .файл DLL.файлы в каталоге, который будет частью вашего пути LIBS в qmake
  4. поставить .dll файлы в каталог, который является частью systemvariable PATH
  5. не забудьте связаться с opengl,glu, glew в вашем файле проекта qmake

вот фрагмент моего файл проекта:

#Required Libraries, replace with your path
# $$quote(...) for quoting pathes with spaces

LIBS += -L$$quote(C:/Programming/freeglut/lib/) -lfreeglut
LIBS += -L$$quote(C:/Programming/glew-1.7.0/lib/) -lglew32 -lglew32mx
# the following line is not necessary when working with VS compiler, odd
LIBS += -lopengl32 -lglu32

#includepath for project and the required libraries
INCLUDEPATH += ./include
INCLUDEPATH += "C:/Programming/glew-1.7.0/include"
INCLUDEPATH += "C:/Programming/freeglut/include"

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

Ура, Мориц!--3-->


Edit: Пакетный файл больше не работает, и мне просто пришлось скомпилировать glew 1.9.0. Итак, вот некоторые дополнительные примечания:

  1. убедитесь, что ar.exe и gcc.исполняемые на вашем пути. Для" стандартной установки QtSDK " эти программы можно найти по адресу C:\QtSDK\mingw\bin;
  2. поместите следующие строки в пакетный файл в glew-1.х.папка г. Это сокращенная версия ответ LightningIsMyName

    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
    
  3. запустить пакетный файл. Результаты будут в папке lib/. Получающийся.dll и .файл DLL.файлы идут вместе (.файл DLL.a-это то, о чем вы хотите рассказать своему компоновщику .dll должна быть доступна системе во время выполнения). Этот.файлы предназначены для статического связывания.