考虑以下:
我开发了X,严格要求使用Y v2.0进行内部业务.这就是说我无论如何都不能恢复到Y v1.0.
另一方面,开发人员使用Y v1.0也有类似的限制.
正如您已经可以争论的那样,问题是:如何在不导出Y符号的情况下将Y链接到X内以避免冲突?Y已经建立,可能我不想修改其源代码或构建设置(如果公开可用).
为了把更多东西放到地球上,我正在设计一个肯定需要一些第三方库的SDK,让我们说zlib.在我的开发中,我将依赖于zlib v1.2.3.4.5.rc6,因为我广泛且成功地使用并测试了它,如果我更改版本,我无法承担SDK测试/修复所需.
SDK将提供的所有静态或dinamically链接库必须隐藏第三方静态库.
潜在客户可能会遇到类似的限制(他需要zlib v7.8.9),那么如何避免符号冲突呢?同样,可能没有更改原始源代码(命名空间等).
更复杂的是,SDK是多平台的,这意味着我需要不同的方法来解决问题,具体取决于平台(Windows,Linux,Mac OS,iOS,Android,...)和使用的编译器(例如,MSVC++和g ++) .
谢谢.
更新
似乎我是这个问题的VENDOR2:
链接到库的多个版本
bstpierre的答案似乎是一个可行的解决方案,但我不确定它是否有效或是否可以在*nix以外的操作系统上重现.
我是桌面GL开发人员,我开始探索移动世界.
为了避免误解,或者欢迎但是微不足道的回复,我可以谦卑地说,我非常了解GL和GL | ES机器.
简短的问题是:如果我们在共享内存架构中使用GL | ES 2.0,那么对客户端阵列使用VBO有什么意义呢?
更详细:
顶点缓冲区是原始内存块,驱动程序无法以任何方式优化任何内容,因为访问模式取决于:1)应用程序如何配置顶点数据布局,2)顶点着色器如何使用缓冲区内容,以及3)我们可以有很多顶点着色器以不同方式操作,并以不同方式获取相同的缓冲区.
对齐:单个VBO存储可以从对底层GL系统最佳的地址开始; 如果我只强制(例如,尊重对齐最佳实践)客户端数组分配到这些边界怎么办?
基于平铺的渲染与立即模式架构不应该发挥作用:根据我的理解,这与我的问题(即内存访问)无关.
我知道使用VBO可以让您的代码在未来的平台/硬件中更好/更快地运行而无需修改它,但这不是这个问题的焦点.
除此之外,我还意识到在共享内存架构中使用VBO会使内存使用量增加一倍(如果由于某种原因,您必须保留顶点数据),并且需要花费大量数据.
与交错顶点数组一样,VBO的使用在开发人员论坛/博客/ official_technotes中得到了很大的"炒作",没有任何数据支持这些语句(即基准测试).