这是情况。我有一个旧的遗留库,它在很多地方都被破坏了,但是内置了很多重要的代码(我们没有源代码,只有 lib + 标头)。该库公开的功能必须以“特殊”方式处理,一些后期和预处理或事情变糟。我在想的是创建另一个使用这个旧库的库,并公开一组“安全”的新函数。
我很快尝试创建这个新库,并将其链接到主程序中。但是,它仍然链接到旧库中通过新库公开的符号。
一件事显然是要求人们不要使用这些功能,但如果我可以通过某种方式隐藏它们,只暴露安全功能,那就更好了。
可能吗?备择方案?
(它在 ARM 微控制器上运行。文件格式是 ELF,操作系统是 Keil 的 RTOS,使用他们的编译器)
[更新]
这就是我最终要做的事情:我在新库中创建了虚拟函数,它们使用与旧库中相同的原型。将新库链接到主程序,如果其他开发人员尝试使用旧库中的“坏”函数,它将使用“符号 abcd 多次定义(由 old_lib.o 和 new_lib.o)”破坏构建。对于政府工作来说已经足够了...
[update2] 我实际上发现我可以在通过 IDE =P 链接库的组件时手动隐藏它们,这是更好的解决方案。很抱歉在这里占用空间。