我有一个程序要与共享库一起使用。C++共享,所以在运行时更改了库
我有一个库(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的偏移量,则它是不同的。这是否包含在二进制文件中?
我已阅读各种手册和教程,但对于编译和运行时环境如何导致此故障并不明智。我原以为界面是一样的,所以这个方法会成功。
谢谢。
当你说“针对编译”时,你的意思是你已经链接库1或库2的lib文件吗?在这种情况下,你必须使用链接的'library.so'文件。 – pstrjds
对不起,是的,我的意思是链接库2和使用库1.我对它失败的原因感兴趣。 – embeddedbob