gpt4 book ai didi

c++ - 我如何静态链接两个版本的 xerces-c(或与此相关的任何库)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:59:43 26 4
gpt4 key购买 nike

我知道这不是一件很干净的事情,但我该怎么做呢?

基本上,我正在静态链接使用 xerces-c 2.7 的第三方库,并且我想使用 xerces-c 3.1(对于 2.x 中实际上不可用的一些较新的最新和最强大的功能)

使用 2.7 的模块(由第三方库在内部使用,从未暴露给我的代码)与使用 3.1 的模块(在我的代码中)没有任何共同之处。

有什么办法吗?我知道这不是一件好事,但一想到提交图书馆升级请求和实际完成升级之间的准备时间,我就不寒而栗。可能至少几个月,我不想走那条邪恶的道路。

一个通用的独立于编译器的解决方案当然会好得多。

最佳答案

除“Linking libraries with incompatible dependecies”中提到的解决方案外,另一个解决方案是通过将不同的版本构建到不同的动态库中来隔离不同的版本。最简单的方法可能是将使用 xerces 3.1 的代码移动到一个新的动态库中,并为其创建一个接口(interface)。由于您是针对 Xerces 进行静态链接,因此这会将引用保留在动态库的内部。您可能需要更改 gcc visibility设置以确保仅从动态库中导出选定的函数名称。

关于c++ - 我如何静态链接两个版本的 xerces-c(或与此相关的任何库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10819388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com