问题是在标题,我会尽量列出我已经尝试过,下面等。
首先,在我的理解中,为了在Windows上使用的OpenGL 4.0,你必须扩展和或绕过默认的Windows库,因为它仅船舶的OpenGL 1.1。
因此,我们必须安装在MinGW的C:/MinGW/
。 通过下载接下来我设置FreeGLUT 压缩包从项目现场 。 提取和通过根据运行的生成文件编译指令与未成年加入--prefix
到./configure
命令。
./configure --prefix=/c/Users/Owner/root/
make all
make install
现在,我已经在freeglut /c/Users/Owner/root/lib/
, /c/Users/Owner/root/include/
等。 接下来是GLEW,我的问题孩子,据我可以告诉。
请从源存档项目现场 ( 直接1.7.0.zip链接 )。 编译是一点点更复杂,我现在的配方从堆栈溢出问题“衍生大厦GLEW与MinGW的窗户 ”。 缩写形式被列举如下:
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 -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
而应该从“根”上运行/path/to/glew-1.7.0/
。
现在,随着库的建立“完成”(假设没有错误......)我的编译简单的程序与此行来完成。
${G++} -DFREEGLUT_STATIC -DGLEW_STATIC -m32 main.cpp -o main.exe -lfreeglut_static -lopengl32 -lwinmm -lgdi32 -lglew32 -I ${ROOTPATH}/include -L ${ROOTPATH}/lib --static
我们分解这个有点穿行为什么我有不同的“额外”的论点,并告诉你什么是错误和问题我已经遇到和解决。
-
-DFREEGLUT_STATIC
和-lfreeglut_static
被用来代替正常-lfreeglut
因为我们在这里想要一个静态的构建。 如果不这样做给出了与freeglut链接错误。 -
-DGLEW_STATIC
添加出于同样的原因。 -
-lwinmm
被添加到固定接头错误:freeglut_init.c:(.text+0x5d9): undefined reference to '_timeBeginPeriod@4'
-
-lgdi32
被添加到固定接头错误:c:/Users/Owner/root//lib\libfreeglut_static.a(freeglut_init.o):freeglut_init.c:(.text+0x58c): undefined reference to '_GetDeviceCaps@8'
现在我难倒与下面的链接器错误:
c:/Users/Owner/root//lib\libglew32.a(glew.o):glew.c:(.text+0x83e8): undefined reference to `_glGetString@4'
c:/Users/Owner/root//lib\libglew32.a(glew.o):glew.c:(.text+0xa1b2): undefined reference to `_glGetString@4'
c:/Users/Owner/root//lib\libglew32.a(glew.o):glew.c:(.text+0xa290): undefined reference to `_glGetString@4'
产生该误差(最小测试用例main.cpp
)的。
#include <GL/glew.h>
#include <GL/freeglut.h>
int main(int argc, char **argv) {
glEnableVertexAttribArray(0);
}
想法?