You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++链接器无法处理glCreateShader,报glewCreateShader相关未定义引用如何解决

问题解决方法

错误原因

你遇到的__glew*未定义引用错误是GLEW库的正常机制导致的:你引入的<GL/glew.h>头文件会通过宏替换,把所有标准OpenGL函数(包括你调用的glCreateShader、glShaderSource、glCompileShader)替换为__glew前缀的内部函数指针,这是GLEW实现OpenGL扩展动态加载的逻辑,和你是否手动编写glewCreateShader调用无关。

具体解决步骤

    1. 补全GLEW库的链接参数
      你当前的编译命令只链接了libGL和libX11,没有链接GLEW本身的库,在编译命令末尾添加-lGLEW即可,修改后的完整编译命令参考:
g++ -g -Wall -o _build/main src/main.cpp -I/opt/x11/include  -L/usr/x11/lib -I./include -I./inc -I./inc/glm -lGL -lX11 -lGLEW
    1. 确认代码中已执行GLEW初始化
      你需要在创建完OpenGL上下文之后、调用任何OpenGL函数之前,执行GLEW的初始化操作,否则运行时会出现函数指针为空的崩溃问题,示例代码如下:
// 完成GL窗口/上下文创建后添加以下代码
GLenum glew_status = glewInit();
if (glew_status != GLEW_OK) {
    fprintf(stderr, "GLEW初始化失败: %s\n", glewGetErrorString(glew_status));
    // 此处添加你的错误退出逻辑
}
    1. (可选)缺失GLEW库的处理
      如果添加-lGLEW后仍然提示找不到libGLEW,说明你的系统没有安装GLEW开发包,Kali/Debian系系统可以用以下命令安装:
sudo apt update && sudo apt install libglew-dev

内容的提问来源于stack exchange,提问作者Snakehater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:15:00