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