Windows下用Makefile链接GLFW的C程序编译报错:找不到头文件
问题分析与解决
你的问题出在头文件搜索路径和#include语句的写法不匹配:
- 你在Makefile里指定了
-I lib/GLFW,这个参数是告诉编译器去lib/GLFW目录下找头文件 - 但你在main.c里写的是
#include <lib/GLFW/glfw3.h>,这会让编译器在lib/GLFW目录下再找lib/GLFW/glfw3.h,实际查找路径变成了lib/GLFW/lib/GLFW/glfw3.h,显然不存在,所以报错找不到头文件。
两种解决办法
办法一:修改#include语句
把main.c里的头文件引入改成:
#include <glfw3.h>
这样编译器会直接在你指定的lib/GLFW目录下找到glfw3.h。
办法二:修改Makefile的-I参数
如果不想改代码,就把Makefile里的-I lib/GLFW改成-I lib,这样编译器会从lib目录开始搜索,就能匹配#include <lib/GLFW/glfw3.h>的路径了。
另外补充:你的Makefile目前只有链接阶段的命令,缺少编译main.c生成main.o的步骤,正常完整的Makefile应该包含编译步骤,比如结合办法一的写法:
gcc -c main.c -o main.o -D GLFW_DLL -I lib/GLFW gcc main.o -o main -D GLFW_DLL -Llib/GLFW lib/GLFW/libglfw3dll.a -lgdi32
内容的提问来源于stack exchange,提问作者user2980746
相关产品推荐
相关产品推荐

