大多数在 Linux 上使用 OpenGL 的应用程序(和库)libGL.so在运行时使用dlopenAPI 加载,而不是动态链接它。
他们为什么这样做呢?
我能想象的唯一原因是,这是因为任何图形驱动程序供应商都提供了不同的libGL,而两个不同的libGL可能是 ABI 不兼容的。(嗯,嗯,为什么它们应该是 ABI 不兼容的?即使它们是,为什么通过加载它们dlopen可以解决这个问题?)
无论如何,如果这样做有充分的理由,我也想这样做。有没有人有一个开源 C/C++ 代码的链接,该代码通过 加载所有 OpenGL 函数dlopen,我可以将其包含到我的项目中而无需太多调整?