我有一个要与共享库一起使用的程序。
我有一个库(1),它是用充满代码的方法编译的,即
class A
{
public:
int* funcA(int a, int b)
{
int* pInt = new int;
*pInt = a + (b * 20);
return pInt;
}
};
然后我有另一个库(2) ,名称和接口完全相同,方法中没有任何内容,即虚拟类
class A
{
public:
int* funcA(int a, int b)
{
return 0;
}
};
(注意:代码只是用来说明我的问题)
如果我针对库 1进行编译,然后在运行时使用库 1 ,那么一切都会按预期工作。
如果我针对库 2进行编译,然后在运行时使用库 1,则第一次调用 funcA 会死掉。
如果我使用 nm -D libMy.so 并在运行时查看 funcA 的偏移量,情况会有所不同。这是否包含在二进制文件中?
我已经阅读了各种手册和教程,但对于编译和运行时方面如何导致此故障一无所知。我会认为接口是相同的,所以方法会成功。
谢谢。