CodeBlocks + Mingw 使用cmake生成GLFW链接库,配置GLFW环境

起因:

学习OpenGL,希望在codeblocks中配置GLFW和GLAD环境,运行opengl程序。而LearnOpenGL CN(链接) 使用的IDE是VS,按照其教程步骤模仿在codeblocks中配置还是遇到很多问题,然而网上要么使用的IDE为VS,要么不采用Cmake,而是自己去复制文件设置一个编译环境,因此,我把我遇到的问题和解决方式分享一下,希望能帮到你。

过程:

(鉴于LearnOpenGL CN有VS的教程,使用codeblocks其实大体操作过程相似,所以主体教程里的注意点还是要遵守,至于不同点,我先讲述下我的经历,再讲解决方法)

  1. 首先下载的GLFW source文件按教程方法通过cmake生成一个新文件夹(教程中叫build),新文件夹可以通过codeblocks编译(即build)生成静态链接库。【注意:新文件夹中并不像VS教程一样,在VS中静态链接库后缀为.lib,而在codeblocks中后缀为.a,其生成在src文件夹下(萌新的我,最开始在这里卡了很久,一度在编译器中调整build target,以及其他设置,以生成.lib)】
  2. 以上生成的.a静态链接库,按照教程推荐的第二种方法将其整合到一个新新文件夹中,作为自己第三方库的根目录。codeblocks 设置 setting compiler 中的Linker settings 中添加其新新文件夹中的.a文件,在search directories中将新新文件夹的includes和libs路径分别添加到相应地方,方便编译器寻找到第三方静态库。
  3. 将libopengl32.a也以同样的方式添加到你整合的新新文件夹,再添到Linker setting中。【而libopengl32.a在哪呢,我最开始在网上下了个2333,其实这个库在Mingw中的lib中有的,你可以搜索下Mingw文件夹】
  4. 【问题:理论上,教程到这就完成了,GLFW环境配置搞定了,但是当你编译时却发现libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x172): undefined reference to `__imp_CreateDCW’ 一系列此等undefined reference to的错误】【处理过程:可以发现其实当libglfw3.a不链接的时候,我们的glfwInit();直接无法识别,那么其实我链接的其实没啥问题,是libglfw3.a库中的函数找不到定义,说明可能缺少其他链接文件,我查询CreateDCW函数的库是什么,在网上找到是libgdi32.a,确实也有相似的错误是未添加此静态库导致的,但是并处理后并没有解决问题;发现函数中有__imp_前缀,再次找解决问题的库,网上有加libwinmm.a解决问题的,说是libglfw3.a在编译后会添上这个函数前缀导致找不到定义,VS默认解决此问题,我一度认为这就是最终解决方案了,但是在加入这个静态库后还是同样的错误】
  5. 【问题的解决:在Stack Overflow网站上浏览相同错误,找到一个错误相同的帖子(链接),但此贴楼主是同时使用了动态库和静态库造成错误,解决方法是干掉静态库。我也看了许多外网贴,在解决不了静态库情况下,我寻求动态库,如何生成动态库?此坑回到最开始的教程,cmake的生成文件即一排红色的那些,不要和教程一样默认,勾选share… IDE 进行build生成动态库,编译器设置链接,解决问题】
  6. 【last:可按教程源码,测试是否成功设置环境】
  7. 如果有时间可以再看看GLFW官网教程,感觉也能解决静态链接库的问题官方教程链接
    在这里插入图片描述
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值