gpt4 book ai didi

c++ - 如何在 2 个不同的共享库中调用具有相同符号的函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:47:11 24 4
gpt4 key购买 nike

我有几个用 C++ 编写的同一个库的版本。我需要并排比较它们。这些库使用相同的命名空间、函数名称并采用相同的参数。

当我同时链接两个或多个库时,是否有任何方法可以控制我使用哪个版本的库?

最佳答案

您无法链接两个具有相同符号的库并同时访问这两个库。但是,您可以构建自己的瘦包装器库来消除两个版本化库的歧义:

  • 定义一个抽象类Wrapper,使用抽象虚函数实现目标库的功能
  • 在名为 WrapperImpl 的类中定义 Wrapper 的实现,该类从虚拟方法调用目标库
  • 定义一个独立的方法 Wrapper *MakeImpl 返回 new WrapperImpl()
  • 多次将WrapperImpl编译成静态库,每次都链接不同版本的目标库。 关键-DWrapperImpl=WrapperImplV1 -DMakeImpl=MakeImplV1传递给编译器,V1V2V3等,针对不同的版本。您应该最终拥有多个库。
  • 将您的主测试仪与这些多个库相关联

此时,您的主测试人员可以访问通过重命名 MakeImplV1MakeImplV2MakeImplV3 等创建的独立函数 MakeImpl 通过预处理器。使用这些函数获取调用不同版本目标库的 Wrapper 实例。

关于c++ - 如何在 2 个不同的共享库中调用具有相同符号的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13179853/

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