mingw-w64 i686-7.1.0编译OpenGL超级宝典第五版示例程序

从网上下载了OpenGL超级宝典第五版的示例代码,代码中只提供了VS和Linux下的编译文件,但直接使用Linux下的Makefile进行编译,发现会报错。为了解决编译的问题,也颇费了写周折。因此写了这篇文章,以帮助遇到同样问题的人。

为了在windows下编译,需对Makefile进行修改。

打开前几个示例的Makefile,发现里面的内容基本一致。由于原本是用于Linux下编译使用,因此链接使用的一些库文件会找不到,需修改为在windows下运行时链接的库文件。又由于使用的mingw已经安装了最新的freeglut和glew库及头文件等,因此去掉了原始文件中glew的编译,并将glut改为freeglut。修改后的Makefile如下:

MAIN = Block
SRCPATH = ../../../Src/Chapter01/$(MAIN)/
SHAREDPATH = ../../../Src/GLTools/src/
SHAREDINCPATH = ../../../Src/GLTools/include/
LIBDIRS = $(LDFLAGS) -L$(SHAREDPATH)
INCDIRS = -I$(SHAREDINCPATH) $(CPPFLAGS)

CC = g++
CFLAGS = $(COMPILERFLAGS) -g $(INCDIRS)
LIBS = -lglew32 -lfreeglut -lopengl32 -lglu32 -lm

prog : $(MAIN)

$(MAIN).o : $(SRCPATH)$(MAIN).cpp
GLTools.o    : $(SHAREDPATH)GLTools.cpp
GLBatch.o    : $(SHAREDPATH)GLBatch.cpp
GLTriangleBatch.o    : $(SHAREDPATH)GLTriangleBatch.cpp
GLShaderManager.o    : $(SHAREDPATH)GLShaderManager.cpp
math3d.o    : $(SHAREDPATH)math3d.cpp

$(MAIN) : $(MAIN).o
    $(CC) $(CFLAGS) -o $(MAIN) $(LIBDIRS) $(SRCPATH)$(MAIN).cpp $(SHAREDPATH)GLTools.cpp $(SHAREDPATH)GLBatch.cpp $(SHAREDPATH)GLTriangleBatch.cpp $(SHAREDPATH)GLShaderManager.cpp $(SHAREDPATH)math3d.cpp $(LIBS)

clean:
    rm -f *.o

修改后由于使用的是动态链接库,因此需要将源代码中定义的FREEGLUT_STATIC取消才能正确链接

#include <GLTools.h>    // OpenGL toolkit
#include <GLMatrixStack.h>
#include <GLFrame.h>
#include <GLFrustum.h>
#include <GLBatch.h>
#include <GLGeometryTransform.h>

#include <math.h>
#ifdef __APPLE__
#include <glut/glut.h>
#else
// #define FREEGLUT_STATIC
#include <GL/glut.h>
#endif
如此便能在windows下使用mingw-w64编译蓝宝书中的示例了,效果如下(程序用到的纹理图片在源代码目录,需要拷贝到可执行文件目录下)

如果需要使用静态库,链接时还需要链接额外链接winmm和gdi32两个库,否则就会像报一堆错误:

$ make
g++  -g -I../../../Src/GLTools/include/  -o Blending  -L../../../Src/GLTools/src/ ../../../Src/Chapter03/Blending/Blending.cpp ../../../Src/GLTools/src/GLTools.cpp ../../../Src/GLTools/src/GLBatch.cpp ../../../Src/GLTools/src/GLTriangleBatch.cpp ../../../Src/GLTools/src/GLShaderManag

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值