これが私がしたことです:
から.hファイルを変更しました
SomeObj* getCacheObj( int i = 0 );
に
SomeObj* getCacheObj( int i );
SomeObj* getCacheObj();
コードを再コンパイルしました (問題ありません)。変更は somelib.so (多くのso ファイルの 1 つ) に行われました。次に、機器の古い so をこれに置き換えましたが、so をロードするときに次のエラーが発生しました。
undefined symbol: _ZN13KeypathHelper11getCacheObjEv
ここで奇妙なのは、このクラスはこの so ファイルでのみ使用されると言われたことです (どうすれば確認できますか?)。私はそれほど経験がなく、調査方法がわかりません。どんな提案でも大歓迎です。
アップデート
この特定の問題は、別のファイルが KeypathHelper クラスを使用していたため、それを含むファイルのみを置き換えたために発生しました。他に更新する必要があるものを見つける方法は、KeypathHelper のすべての so を grep することでした。