hereの指示に従って、iPhone用の再利用可能な静的ライブラリを作成しています。中古ライブラリのシンボルを自分の静的ライブラリに公開しない
私は内部的にはminizip
をライブラリに使用しますが、ユーザーに公開したくありません。
ユーザーは、自分自身、おそらく異なるバージョンを含むことができ、自分の「内部」minizipバージョンとの衝突を引き起こさないようにする必要があります。
これは可能ですか?
編集:
私はminizipファイルに対して追加のコンパイラフラグに-fvisibility=hidden
を追加し、__private_extern__
と__attribute__((visibility("hidden")))
する機能を変更しようとしましたが、まだ定義された外部シンボルを生成するようだ:
00000918 T _unzOpen
0000058e T _unzOpen2
00001d06 T _unzOpenCurrentFile
00001d6b T _unzOpenCurrentFile2
...
編集#2:
明らかにこれらのXcodeがソースをビルドするときに決して起こらないリンカによってのみ表記されるのは、-cパラメータを追加することです( "ソースファイルをコンパイルまたはアセンブルしますが、リンクしません")。
あなたはミニコピーの内部コピーを変更することができますか?iPhoneはMach-Oの2レベルのシンボル名前空間をサポートしていますか?私は両方への答えがはいと思う。 – ephemient
私は私のコピーを変更してもよろしいですか?たぶん、私は私のライブラリのために使用するプレフィックスの前にすべての記号を付けることができます。私はmy_をやっても構いません。 iPhoneで2レベルのシンボル名前空間がサポートされているかどうかはわかりません。 –
今後のGoogle社員のために、これが役立つかもしれません。http://stackoverflow.com/a/14863432/311567 – dashesy