以前有很多问题:如何使用MinGW在Windows上编译GLEW 1.7.0源代码?目标是从c ++项目动态链接库.
更多信息:我正在使用QtCreator,ergo使用qmake进行构建.我在Windows 7上.到目前为止,我已经尝试/查看了以下链接.
使用vc ++ libs构建静态,构建dll.a重用vc ++ .dll
使用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
Run Code Online (Sandbox Code Playgroud)
关于这个问题,我已经结束了.我已经对qmake和windows path变量中的LIBS路径进行了两次和三次检查,以包含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 …Run Code Online (Sandbox Code Playgroud) 问题在于标题,我将尝试列出我已经尝试过的内容,等等.
首先,根据我的理解,为了在Windows上使用OpenGL 4.0,您必须扩展和/或绕过默认的Windows库,因为它只提供OpenGL 1.1.
所以我们安装了MinGW C:/MinGW/.接下来,我通过从项目站点下载tarball来设置FreeGLUT .提取和通过根据运行的生成文件编译指令与未成年人加入到命令.--prefix./configure
./configure --prefix=/c/Users/Owner/root/
make all
make install
Run Code Online (Sandbox Code Playgroud)
现在我有freeglut /c/Users/Owner/root/lib/,/c/Users/Owner/root/include/等等.接下来是GLEW,就我所知,我的问题孩子.
从项目站点下载源存档(直接1.7.0.zip链接).编译有点复杂,我目前的配方来自堆栈溢出问题" 用mingw构建窗口上的glew ".缩写形式如下:
mkdir lib/
mkdir bin/
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 …Run Code Online (Sandbox Code Playgroud) 我跟着这个话题:用mingw在windows上构建glew但是这里出了点问题:
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
我收到此错误:
C:\ MinGW\dev_lib\glew-2.0.0> 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 src/glew.o:glew.c :(.text + 0x28f80):`DllMainCRTStartup @ 12'c的多重定义:/ mingw/bin /../lib/gcc/mingw32/4.9.3/../../../dllcrt2.o:(.text+0x60):首先在这里定义collect2.exe:错误:ld返回1退出状态
感谢帮助.
这是重复的,我很抱歉,但我没有任何其他选择,因为我无法对答案发表评论,但他们没有解决我的问题.这是原帖:
这是我的问题:
1)当我尝试@ LightningIsMyName的答案时,我收到此错误:
Makefile:1:***缺少分隔符.停止.
2)当我尝试@ anon的答案时,我收到此错误:
Makefile:1:Makefile:1:***命令在第一个目标之前开始.停止.
人们说这个并且帮助了他们,但他们并没有为我工作.我不知道我在某种程度上重复了一个问题,但我没有其他机会对评论的声望限制.希望你能帮忙.谢谢.