opengl 如何链接GLFW

ezykj2lf  于 2022-11-04  发布在  其他
关注(0)|答案(3)|浏览(184)

我正在尝试将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()

zyfwsgd6

zyfwsgd61#

#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模式询问,你就会得到正确的返回位置,如上面的示例所示。

w51jfk4q

w51jfk4q2#

你把编译和链接搞混了。如果你缺少了头文件,你可能会比链接阶段更快地出现错误。
“Undefined reference”是由于链接器找不到符号造成的。最可能的原因是您没有告诉gcc它应该链接到GLFW库:

gcc myfile.c -lglfw
6tr1vspr

6tr1vspr3#

当我在Linux上时,我编译opengl/glfw项目,如下所示:

gcc main.c -lGL -lglfw

当我在windows上时,我通过编写以下代码来编译它们:

gcc main.c libglfw3.a -lopengl32 -lgdi32

我把libglfw3.a文件放在main.c所在的目录下。我听说有人说他们在写-lopengl32 -lgdi32 -luser32 -lkernel32 -lws2_32之前不能正确链接。另一件值得一提的事情是,当我下载32位glfw二进制文件时,我不能链接glfw库。当我下载64位glfw二进制文件时,一切都正常。我有一台64位的机器和一个x86_64-w 64-mingw 32.我读过一些有相反经历的人的评论,他们在下载64位二进制文件时无法链接glfw库,但在下载32位二进制文件后却能链接它们。我的建议是两种都试试。

相关问题