Mac OS X上で共有Cライブラリ(dylib)を関数を追加して拡張したいと考えています。関数const char *get_string(void)
を呼び出してみましょう。Mac OS X:関数を追加して共有ライブラリを拡張する
私はget_string(void)
関数を含む新しい共有ライブラリを作成し、拡張したいライブラリに対してそれを好きでした。ライブラリラッパーが話すように。ここまでは順調ですね。次のステップは、新しい拡張ライブラリとアプリケーションをリンクすることですが、拡張ライブラリはシンボル_get_string
のみをエクスポートし、元のライブラリのシンボルはエクスポートしないという問題があります。そのため、(元のライブラリの代わりに) "拡張"ライブラリとリンクすると、未解決のシンボル警告/エラーが発生します。
元のライブラリのシンボルをすべてエクスポートする方法はありますか(多くあります)、または問題を解決するためのより良い方法がありますか?基本的には、既存のライブラリを拡張したいだけです。私は元のライブラリのソースにアクセスできますが、私はそれを再コンパイルすることはできません。
ありがとうございます!
タンク、いいですね、それは私のために動作しません。私はXcodeを使用し、libparent.dylibを拡張する必要がある "-L/usr/local/lib -reexport-lparent"に "Other Linker Flags"というプロパティを設定します。 libtoolがreexportフラグを渡していないようです。親ライブラリはリンクされていません。何か提案はありますか? – Benjamin
sub_libraryフラグは認識されますが、nmは依然として親ライブラリのシンボルをリストしません。 – Benjamin
sub_libraryフラグは完全に機能します。 – Benjamin