我有一个第三方使用的API来创建动态链接到我的应用程序的共享库。这些共享库声明了公共函数,这些函数返回API中定义的纯虚拟类的实现。然后,应用程序可以调用此类上的各种虚拟方法以与第三方代码进行交互。
我遇到的问题是当我更改API并尝试使用“过时的”共享库(特别是更改返回类型)时。库被正确加载(并且一些方法被调用没有问题),但是当函数签名不匹配时,我会遇到分段错误。
我理解为什么会这样(并且'修复'是为了获得更新的共享库),但我希望我能在我的应用程序中更优雅地处理此错误。 如何检查给定的共享库是否与当前版本的API兼容(因此我可以记录有用的错误)?
答案 0 :(得分:1)
如何检查给定的共享库是否与当前版本的API兼容
有三种“标准”解决方案:
答案 1 :(得分:0)
这些共享库声明公共函数,这些函数返回它们在API中定义的纯虚拟类的实现。
这可能意味着您的共享库具有以下界面:
struct Lib
{
virtual int foo() = 0;
};
extern "C" Lib& getLib();
此处getLib
是您提到的公共功能。
如何检查给定的共享库是否与当前版本的API兼容
要求新版本的共享库具有不同名称的公共功能。