这是一个创建于 4596 天前的主题,其中的信息可能已经有所发展或是发生改变。
今天编译一个C写的opengl程序,开始居然没有运行起来,设置如下:
> environment
安装了Nvidia opengl SDK
安装了minGW在默认目录
下载了glut的库函数包
将glut的函数解压缩在要调试的程序的目录下
> test.c
#include "windows.h"
#include "GL\GLUT"
> cmd
gcc test.c -o test -mwindows -lglut32 -lglu32 -lopengl32 -std=c99
居然link过不去,说找不到glut32.我这也是参考网上的文档,所以也不知道到底是怎么回事。后来改成:
gcc test.c -o test -mwindows glut32.lib -lglu32 -lopengl32 -std=c99
就通过了。
好奇怪,为什么glut32.dll不能用呢?那为什么可以连接glu32.dll 和 opengl32.dll
后来命令改成:
gcc test.c -o test -mwindows -L. -glut32 -lglu32 -lopengl32 -std=c99
然后居然通过了。
然后删除了本地目录的glut32.lib,再运行该命令,也通过,但是出来了几个警告。
后来知道 .lib是静态的 .dll是动态的,但glut的liblink到源文件中,并不能生成可执行的文件,事实上,
链接glut32.lib 和glut32.dll生成的可执行文件大小都一样。所以这个lib只是帮编译器找到dll而已,只是个table,也没实际内容。后原来把各个目录下的glut32.dll删除再运行
gcc test.c -o test -mwindows glut32.lib -lglu32 -lopengl32 -std=c99
只是通过了,但是无法执行。
所以总结,glut32.dll是必需的,而glut32.lib不是。网上很多文档并不是很详细,也没告诉为什么会发生这种情况。
OK
1 条回复 • 1970-01-01 08:00:00 +08:00
|
|
1
Hualin 2012-04-25 02:37:25 +08:00
呃,是 gcc test.c -o test -mwindows -L. -lglut32 -lglu32 -lopengl32 -std=c99
|