0

对于 GUI 项目,我们有一个 makefile,它从所有 .o 文件构建一个库 (.a),然后为每个测试链接该库。

这样做时,任何未使用的函数都不会包含在可执行文件中。为了不必每次都重新构建每个测试,我们决定切换到 .so 并使用动态链接。此代码使用 OpenGL 和glad.o (glad.c -->glad.o)

libgrail.so: undefined reference to `glad_glProgramBinary'
libgrail.so: undefined reference to `glad_glGetProgramBinary'

我很高兴,甚至不确定我们是如何得到它的。它定义了上述符号,但它不是用 -fPIC 编译的,也不能链接到共享库中。

当我使用glad.c 构建时,生成的glad.o 没有符号

查看头文件glad.h

GLAPI PFNGLPROGRAMBINARYPROC glad_glProgramBinary;
#define glProgramBinary glad_glProgramBinary

这些在编译着色器时被调用。

所以也许我们glad.c 的来源很糟糕。我翻遍了,可以在各种opengl演示中找到它,但我不明白它真正来自哪里。

我找到了这个生成器: https ://glad.dav1d.de/

并为编译该代码的 OpenGL 3.3(.c 和 .h)生成的代码具有相同的错误。那么我应该获得什么版本的glad.c 才能正确生成这些符号?

4

0 回答 0