我有几个用 C++ 编写的同一个库的版本。我需要并排比较它们。这些库使用相同的命名空间、函数名并采用相同的参数。
当我同时链接两个或多个库时,是否有任何方法可以控制我使用哪个版本的库?
我有几个用 C++ 编写的同一个库的版本。我需要并排比较它们。这些库使用相同的命名空间、函数名并采用相同的参数。
当我同时链接两个或多个库时,是否有任何方法可以控制我使用哪个版本的库?
您不能链接具有相同符号的两个库并访问两者。但是,您可以构建自己的瘦包装库来消除两个版本库的歧义:
Wrapper
,使用抽象虚函数来练习目标库的功能Wrapper
该类WrapperImpl
从虚拟方法调用目标库Wrapper *MakeImpl
返回new WrapperImpl()
WrapperImpl
多次编译成静态库,每次都链接不同版本的目标库。关键:传递-DWrapperImpl=WrapperImplV1 -DMakeImpl=MakeImplV1
给编译器,使用V1
, V2
, V3
, 等等,用于不同的版本。您应该最终得到多个库。此时,您的主测试人员可以访问通过预处理器重命名创建的独立函数MakeImplV1
、MakeImplV2
等。使用这些函数通过目标库的不同版本获取该调用的实例。MakeImplV3
MakeImpl
Wrapper