0%

详解如何在自己电脑上配置freeglut编程环境并跑通

freeglut是glut库的开源替代方案,想要利用freeglut来辅助完成OpenGL的编程,首先,要在自己电脑上配置好其编程环境。以下为我的环境配置详解。


freeglut的下载

这里有两种办法,一种是下载源码自己编译,一种是直接下压缩包。

  1. 源码下载地址

  2. 如果是以VS为编程环境的,可直接下载链接中的MSVC包

    MSVC包下载地址


freeglut的配置

将文件拷贝到相应目录下,根据自己想要编32位还是64位版本的程序来选择对应的路径。

.h文件

\include\GL目录下的所有.h文件复制到 Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\GL目录下;

.lib文件

  • 32位版本

    \lib\x86\中的freeglut.lib文件复制到Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28610\lib目录下;

  • 64位版本

    \lib\x64中的freeglut.lib文件复制到Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28610\lib\x64目录下;

.dll文件

  • 32位版本

    \bin\x86\freeglut.dll文件复制c:\Windows\SysWOW64目录下;

  • 64位版本

    \bin\x64\中的freeglut.dll文件复制到c:\Windows\System32目录下;


测试安装是否成功

创建一个空白的console工程,创建一个C++文件,拷入代码运行。

提供一个简单的glut程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <Windows.h>
#include <GL/glut.h>

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(300, 300);
glutInitWindowPosition(100, 100);
glutCreateWindow("testgl");
const char* version = (const char*)glGetString(GL_VERSION);
printf("OpenGL 版本: %s\n", version);
glutMainLoop();
return 0;
}

若能运行成功,会显示OpenGL的版本。


问题

在第一次运行VS跑程序时,报错LINK: fatal error LNK1104 无法打开文件"freeglut.lib",检查了lib、dll文件的路径后并没发现问题,上网查询后发现要进行预处理。

解决办法:

【属性】->【C/C++】->【预处理器】->【预处理器定义】,点击【编辑】新增一个NDEBUG


对于h、lib和dll文件的理解

三者区别

.h:头文件,是函数声明的接口,仅仅是接口(与包含实现的.cpp.cxx等相反)

.lib:静态库,可能包含代码或仅链接到动态库(即动态链接的导入库)。不管是哪种方式,它都是您与程序链接的编译代码。静态库在链接时包含在.exe中。

.dll:动态库,有函数的可执行代码。就像静态文件一样,但您需要将它与.exe文件一起部署,因为它是在运行时加载的。

.h是编译时需要,.lib是链接时需要,.dll是运行时需要。


说明

如果程序是静态链接,只需.h.lib文件

如果程序是动态链接,则lib作为导入库,其中没有函数实现代码,只有函数的地址表等信息,方便在.dll文件中找到函数的实现,起到桥梁的作用。


参考

FreeGlut配置简介