无法解析的外部符号 __imp____glutCreateMenuWithExit@8

今天开始学习openGL,网上找了一个例子,拿来调试,遇到如下问题。

已经加入了各种库和头文件:

#include <windows.h>
#include <GL/gl.h>
#include <GL/glaux.h>
#include <GL/glu.h>
#include <gl/glut.h>
#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"GLU32.LIB")
#pragma comment(lib,"glaux.lib")
#pragma comment(lib,"GLUT32.LIB")
#pragma comment(lib,"gdiplus.lib")

仍然有此链接错误:

1>lines.obj : error LNK2001: 无法解析的外部符号 __imp____glutCreateMenuWithExit@8
1>lines.obj : error LNK2001: 无法解析的外部符号 __imp____glutInitWithExit@12
1>lines.obj : error LNK2001: 无法解析的外部符号 __imp____glutCreateWindowWithExit@8
1>D:\Visual Studio 2008\Projects\GlLines\Debug\GlLines.exe : fatal error LNK1120: 3 个无法解析的外部命令

网上各种找方法,最有效的是

在#include<gl/glut.h>之前加上

define GLUT_DISABLE_ATEXIT_HACK

 

注:一定要恰好在#include glut.h之前加入以上代码,正确用法如下:

#define GLUT_DISABLE_ATEXIT_HACK
#include<gl/glut.h>




### 解决 Visual Studio 链接器错误 '无法解析外部符号 _imp__glut' 当在 Visual Studio 中编译 OpenGL 应用程序时,如果遇到链接器错误 `LNK2019` 或类似的未解析外部符号 `_imp__glut` 错误,通常是因为缺少必要的库文件或配置不当。 #### 添加正确的库文件 为了确保项目能够正确链接到所需的 GLUT 和其他 OpenGL 库,在项目的属性设置中添加相应的库路径和名称非常重要。具体操作如下: - **确认安装了 FreeGLUT**:由于 Microsoft 不再提供官方版本的 GLUT 库,建议使用 FreeGLUT 替代[^3]。 - **指定附加依赖项**: 打开项目属性页 -> 配置属性 -> 链接器(Linker) -> 输入(Input),在此处添加 `freeglut.lib` 及任何其它必需的静态库名(例如 opengl32.lib)。对于动态链接,则需相应调整为 `.dll` 文件并将其放置于可执行文件所在目录或系统的 PATH 环境变量内。 - **设定包含路径与库路径**: 同样是在项目属性窗口下的 C/C++ -> 常规(General), 设置额外的头文件夹;而在链接器(Linker)->常规(General)部分增加 .lib 的查找位置。这有助于编译器定位所需资源而不报错。 另外需要注意的是,某些旧版 VS 安装包可能自带了一个较老版本的 glut 实现,它可能会引起兼容性问题。因此推荐下载最新稳定发行版 freeglut 来替代之,并按照上述指导完成集成工作。 针对特定提到的关于 `__imp____glutInitWithExit@12` 这样的内部实现细节引发的问题,可以通过定义宏 `GLUT_DISABLE_ATEXIT_HACK` 来规避潜在冲突[^4]。 ```cpp #define GLUT_DISABLE_ATEXIT_HACK #include <GL/glut.h> ``` 通过以上措施应该可以有效解决大多数情况下因缺失适当库而导致的链接阶段错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值