之前有人问过很多问题:如何使用MinGW在Windows上编译GLEW 1.7.0源代码? 的目标是从c++项目动态链接到库。
更多信息:我正在使用QtCreator,因此请使用qmake进行构建。我在Windows 7上。到目前为止,我已经尝试/看过以下链接。
use posted batch file also tried to replace gcc with g++
static with vc++ libs, build dll.a reuse vc++ .dll
Get MSYS run shipped makefile
Info on initial issues
simple stuff using GLEW msvc++ binaries, works on my desktop
不幸的是,当我在项目中使用编译后的结果时,所有发布的解决方案都以以下错误消息结尾:
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
我对这个问题不知所措。我已经一遍又一遍地检查了qmake中的LIBS路径和Windows路径变量,以包括glew dll所在的目录。同样,qmake的INCLUDEPATH应该可以。无论如何,这里是.pro文件中的路径:
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"
那么,有没有人可以提供关于如何获得使用MinGW编译的GLEW 1.7.0源代码的简单说明呢?
最佳答案
好的,我解决了。
就我所见,基本上我正确编译了 GLEW。我忘了将 -lopengl32 -lglu32 添加到我项目的 LIBS 路径中。出于某种原因,我需要在我的 Qt/MinGW/Windows 系统上执行此操作。在我的桌面上:Qt/VC++/Windows 我不必这样做。有没有人对此有解释?
对于任何遇到相同问题的人:
-> 见底部(旧的批处理文件不再在 github 上)
这是我的项目文件的片段:
#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"
无论如何,非常感谢,也许这有助于某些人不要忘记依赖项:)
干杯,
莫里茨
编辑:
批处理文件不再存在,我只需要编译 glew 1.9.0。所以这里有一些进一步的注意事项:
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
关于mingw - 使用 MinGW 在 Windows 上构建 GLEW 1.7.0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10534726/