【问题标题】:How to include Libraries without an IDE如何在没有 IDE 的情况下包含库
【发布时间】:2022-11-22 01:41:01
【问题描述】:

我刚刚下载了 MingW 编译器和 glfw 以及 glad 库。我将 Notepad++ 设置为使用 mingW 进行编译,现在我无法弄清楚如何包含上述库。我是否必须将 .h 文件与我的 main.cpp 文件或 smth 一起放在我的文件夹中?我必须将我的库解压缩到哪里。我完全不知道并且已经在网上搜索了几个小时。

我已经将库解压缩到与 main.cpp 文件相同的文件夹中,然后在 main.cpp 中像这样调用 smth include<librariename/include/lib.h>

【问题讨论】:

  • 我已将库解压缩到与 main.cpp 文件相同的文件夹中仅仅将开源库的源代码转储到同一个文件夹中是行不通的。有些可能有非常复杂的构建方法,这远远超出了初学者的能力。我的快速入门建议是安装 msys2 以安装 MinGW 并使用 msys2 (pacman) 的内置包管理来安装依赖库。这将解决为您的编译器获取正确的库以及头文件和库位置的问题,但您仍然必须指定需要链接的库
  • 我的 minGW 安装中有一个名为“msys”的 .batch 文件,够了吗?
  • 应该是这样的:https://www.msys2.org/
  • 我必须重新安装mingw吗?它工作得很好。

标签: c++ notepad++ mingw glfw glad


【解决方案1】:

首先,考虑 MinGW-w64,它比 MinGW 更新得多,并且支持 Windows 32 位和 64 位。您可以从https://winlibs.com/ 获得独立版本,或者您可以使用pacman 从 MSYS2 安装它。

要使用库,您需要做几件事:

  • 使用#include <someheader.h> 在您的代码中包含头文件。
  • 使用 -I (-Iheaderpath) 编译器标志告诉 gcc 编译器在哪里可以找到头文件。
  • 使用-L (-Llibrarypath) 链接器标志告诉 gcc 链接器在哪里可以找到库文件。
  • 告诉编译器实际使用带有-l (-llibrary) 链接器标志的库。这将使链接器通过在指定库名称前添加 lib 并在其后添加 .a(或在共享构建的情况下为 .dll.a)来查找库文件。

因此,例如,如果您有以下文件:

  • /C/Temp/bin/glfw.dll
  • /C/Temp/include/GL/glfw.h
  • /C/Temp/lib/libglfw.a

然后你应该将#include <GL/glfw.h添加到你的代码中并像这样构建(如果你的代码在main.c中):

gcc -c -o main.o main.c -I/C/Temp/include
gcc -o main.exe main.o -L/C/Temp/lib -lglfw

在上面的示例中,第一行是编译器步骤,第二行是链接器步骤。您可以像这样组合这两个步骤:

gcc -o main.exe main.c -I/C/Temp/include -L/C/Temp/lib -lglfw

但是随着项目的增长,最好将编译器和链接器步骤分开。

事实上,随着项目的增长,您可能需要考虑使用一些构建系统(如 make 或 cmake)。

【讨论】:

    猜你喜欢
    • 2011-07-04
    • 2015-09-14
    • 2018-10-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 2013-06-30
    • 2012-07-09
    • 2014-12-21
    相关资源
    最近更新 更多