如何在 makefile 中链接 Windows 上 C 程序中的 GLFW

问题描述 投票:0回答:1

我的项目结构如下所示。

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>

当我编译时出现错误,说找不到它。

compilation linker mingw glfw
1个回答
0
投票

有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 来执行此操作。
© www.soinside.com 2019 - 2024. All rights reserved.