我有隱藏在xcode 4.6中的符號的輕微問題或誤解。我在網上到處搜索,找不到任何具有相同問題的帖子。xcode 4.6符號可見性
目前,我已經創建了一個框架項目包含這樣一個簡單的頭文件:
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,因此只有功能int c和類z將被導出或對其他項目可見。
我構建的框架沒有錯誤或警告,然後複製/添加到可可應用程序進行測試。
我能夠包含頭文件,但我仍然能夠訪問所有類和函數。
我希望有人能解釋我爲什麼或在哪裏出錯或者之前遇到過這個問題?
問候
感謝梅克,當然,我是完全愚蠢的(腦筋被炸,但沒有藉口)。我想我對[這個蘋果頁面](https://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/CppRuntimeEnv/Articles/SymbolVisibility.html)感到困惑,因爲它展示了一個例子,我雖然是在一個頭文件中,或者正在演示如何放置__attribute __((visibility(「default」)))或其他。 那麼如果內聯函數int add例如它會隱藏正確? – themadme 2013-02-19 13:46:58
如果您聲明瞭函數'inline',但仍將其放入標題中,則無論標題包含在何處,它都將仍然可見。如果你想讓一個函數在你的庫之外不可見,那麼聲明它爲'hidden',並確保它不出現在你的框架包的任何頭文件中。只需使用私有H文件,該文件僅對框架文件可見,但不能複製到框架束,因此對於鏈接到您的框架的項目不可見。 – Mecki 2013-02-19 14:00:10
再次感謝你的智慧麥基。現在我無法等待回家,並繼續將我的Windows項目轉換爲Mac,並希望Linux。 再次感謝。 – themadme 2013-02-19 14:16:56