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

Linux下GCC11.2编译ImGui+GLFW+OpenGL报错找不到-limgui如何解决

报错原因

-limgui是告诉链接器查找预编译的libimgui.so(动态库)或libimgui.a(静态库)文件,你目前仅将ImGui的源码存放在项目目录下,没有生成对应的预编译库,也没有把ImGui源码加入编译列表,因此链接器找不到对应依赖,抛出该错误。

解决方案

方案1:直接编译ImGui源码到项目(新手推荐,无需单独编译库)

直接把所有用到的ImGui源码加入编译命令即可,无需额外生成库文件:

  • 先确认include文件夹下的文件齐全:除了核心的imgui.h/imgui.cpp外,glfw+opengl3的示例还需要imgui_impl_glfw.h/imgui_impl_glfw.cpp、imgui_impl_opengl3.h/imgui_impl_opengl3.cpp,以及imgui_draw.cpp、imgui_widgets.cpp、imgui_tables.cpp这几个核心实现文件。
  • 假设你的项目主文件为main.cpp,调整编译命令如下:
gcc main.cpp include/imgui.cpp include/imgui_draw.cpp include/imgui_widgets.cpp include/imgui_tables.cpp include/imgui_impl_glfw.cpp include/imgui_impl_opengl3.cpp -I./include -lstdc++ -lglfw -lGL -o imgui_demo

参数说明:

  • 所有ImGui的cpp文件直接加入编译列表,和项目代码一起编译链接
  • -I./include指定头文件搜索路径为当前目录下的include文件夹
  • 移除原命令中的-limgui参数,不需要再链接预编译的ImGui库

方案2:预编译ImGui为静态库(适合多项目复用场景)

如果你需要在多个项目中使用ImGui,可以先把它编译为静态库,再链接到项目中:

  1. 编译生成静态库:
# 进入存放ImGui源码的include目录
cd include
# 编译生成所有目标文件
g++ -c imgui.cpp imgui_draw.cpp imgui_widgets.cpp imgui_tables.cpp imgui_impl_glfw.cpp imgui_impl_opengl3.cpp -I.
# 打包为静态库libimgui.a
ar rcs libimgui.a *.o
  1. 编译你的项目代码,指定库搜索路径:
gcc main.cpp -I./include -L./include -lstdc++ -lglfw -lGL -limgui -o imgui_demo

参数说明:

  • -L./include告诉链接器到include目录下查找你编译好的静态库
注意事项
  • 如果你使用glad加载OpenGL函数,编译时需要额外添加参数-DIMGUI_IMPL_OPENGL_LOADER_GLAD
  • 不需要全量功能的话,可以按需删减参与编译的ImGui源码文件,核心功能仅保留imgui.cpp和imgui_draw.cpp即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:54:01