【问题标题】:How do I link GLFW如何链接 GLFW
【发布时间】:2013-09-27 11:35:03
【问题描述】:

我正在尝试将 GLFW 链接到我的 C 程序。

文档似乎建议 #include<GLFW/glfw3.h> 但是我已经安装了 2.7.2(来自我的发行版的存储库)并且没有那个头文件:

find / -name *glfw* 2> /dev/null
/usr/lib/libglfw.so.2.6
/usr/lib/libglfw.a
/usr/lib/libglfw.so
/usr/lib/pkgconfig/libglfw.pc
/usr/lib/libglfw.so.2
/usr/include/GL/glfw.h
/usr/share/doc/libglfw-dev
/usr/share/doc/libglfw2
/var/cache/apt/archives/libglfw2_2.7.2-1_i386.deb
/var/cache/apt/archives/libglfw-dev_2.7.2-1_i386.deb
/var/lib/dpkg/info/libglfw2.list
/var/lib/dpkg/info/libglfw2.postinst
/var/lib/dpkg/info/libglfw-dev.md5sums
/var/lib/dpkg/info/libglfw2.postrm
/var/lib/dpkg/info/libglfw2.md5sums
/var/lib/dpkg/info/libglfw2.shlibs
/var/lib/dpkg/info/libglfw-dev.list

我尝试了#include<GL/glfw.h>,但我仍然得到undefined reference to 'glfwLoadTexture2D'

如何链接到 GLFW 并使用glfwLoadTexture2D()

【问题讨论】:

    标签: c opengl glfw


    【解决方案1】:

    #include 对链接器没有任何作用;它只是引入了声明,而不是实际的功能。

    The documentation 表示 GLFW 使用 pkg-config(不足为奇;@elmindreda 知道她的东西),所以你的编译行应该是这样的:

    $ cc `pkg-config --cflags glfw3` -o foo foo.c `pkg-config --static --libs glfw3`
    

    还要注意,由于库使用pkg-config,因此您不应该“关心”诸如头文件和库文件在特定安装中的位置等细节。只需使用--cflags--libs 模式询问,您就会得到返回的正确位置,如上例所示。

    【讨论】:

    • 好吧,我显然遗漏了一些基本的东西,因为我认为当我在 GL/glfw.h 中找到标题时,-lGL 足以链接到它:/
    • @trideceth12 -l 命令行选项只链接一个库,如果你说GL 它将与libGL.so 链接,而不是“某个文件夹下的所有库在某个名为GL 的地方” .也阅读编译器文档。
    【解决方案2】:

    您正在混淆编译和链接。如果您缺少标题,您可能会比链接阶段更早出现错误。

    “未定义的引用”是链接器找不到符号的结果。最可能的原因是您没有告诉 gcc 它应该链接到 GLFW 库:

     gcc myfile.c -lglfw
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-29
      • 2021-11-13
      • 2014-03-27
      • 2013-05-06
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多