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