共有ライブラリで使用するプログラムがあります。
コードでいっぱいのメソッドでコンパイルされた1つのライブラリ(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 のオフセットを見ると、違います。これはバイナリに含まれていますか?
私はさまざまなマニュアルやチュートリアルを読みましたが、コンパイルとランタイムの側面がどのようにこの失敗を引き起こすかについては賢明ではありません. メソッドが成功するように、インターフェースは同じだと思っていたでしょう。
ありがとう。