我的项目结构如下所示。
lib/GLFW/glfw3.h
lib/GLFW/glfw3.dll
lib/GLFW/libglfw3dll.a
main.c
main.exe
makefile
我的 makefile 中有这个。
gcc main.o -o main -D GLFW_DLL -I lib/GLFW -Llib/GLFW lib/GLFW/libglfw3dll.a -lgdi32
在我的 main.c 文件中,我像这样包含它。
#include <lib/GLFW/glfw3.h>
当我编译时出现错误,说找不到它。
有3个步骤,每个步骤都需要特别注意:
使用
-I
标志添加可以找到标头 (.h
) 文件的位置。
gcc -c -o main.o main.c -DGLFW_DLL -Ilib/GLFW
使用
-L
标志添加可以找到标头导入库(.a
或 .dll.a
)文件的位置。
使用
-l
标志指定要链接的导入库文件(.a
或 .dll.a
),省略 lib
前缀和扩展名(.a
或 .dll.a
)。
gcc -o main.exe main.o -Llib/GLFW -lglfw3dll -lgdi32
请注意,通常共享导入库应该被称为
libglfw3.dll.a
而不是 libglfw3dll.a
。在这种情况下,标志应该是 -lglfw3
(如果您没有与 libglfw3.dll.a
标志静态链接,它将拾取 -static
,在这种情况下它将寻找 libglfw3.a
)
程序链接的
.dll
文件(以及那些 .dll
文件再次链接的 .dll
文件等)必须在运行时找到。
为了确保找到它们,您可以:
.dll
文件的位置添加到您的 PATH
环境变量中(我不推荐这样做)。.dll
文件(在本例中为 glfw3.dll
)复制到与 .exe
文件相同的文件夹中。提示:您可以使用 pedeps项目中的
copypedeps -r
来执行此操作。