xcode4.6でシンボルを非表示にすることにわずかな問題または誤解があります。Webのいたるところを検索しましたが、同じ問題の投稿は見つかりませんでした。
現在、次のような単純なヘッダーファイルを使用してフレームワークプロジェクトを作成しました。
class Test
{
public:
Test(){}
Test(){}
};
int a(int n) {return n;}
__attribute__((visibility("hidden"))) int b(int n) {return n;}
__attribute__((visibility("default"))) int c(int n) {return n;}
class X
{
public:
virtual ~X();
};
class __attribute__((visibility("hidden"))) Y
{
public:
virtual ~Y();
};
class __attribute__((visibility("default"))) Z
{
public:
virtual ~Z();
};
X::~X() { }
Y::~Y() { }
Z::~Z() { }
プロジェクト設定で、「デフォルトで非表示になっているシンボル」がYESに切り替えられていることを確認しました。したがって、関数intcとクラスzのみが他のプロジェクトにエクスポートまたは表示されます。
エラーや警告なしでフレームワークを構築し、それをコピーしてcocoaアプリケーションに追加してテストします。
ヘッダーファイルをインクルードすることはできますが、それでもすべてのクラスと関数にアクセスできます。
誰かが私が間違っている理由や場所を説明できるか、以前にこの問題に遭遇したことがあるといいのですが?
よろしく