xcode 4.6의 기호를 숨기는 데 약간의 문제 또는 오해가 있습니다. 나는 웹에서 사방을 수색하고 동일한 문제점이있는 포스트를 찾아 낼 수 없다.xcode 4.6 기호 가시성
현재 나는 간단한 헤더 파일이 너무 함유 프레임 워크 프로젝트를 만들었습니다 : "기본적으로 숨겨져 기호가"YES로 전환하기 때문에 기능 만되는 것을 나는 확실히 만든 프로젝트 설정에서
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() { }
int c와 클래스 z는 다른 프로젝트에서 내보내거나 볼 수 있습니다.
프레임 워크를 오류나 경고없이 만든 다음 테스트 용으로 코코아 응용 프로그램에 복사/추가합니다.
헤더 파일을 포함 할 수 있지만 모든 클래스와 함수에 액세스 할 수 있습니다.
내가 왜 잘못되거나 왜이 문제가 발생했는지 누군가가 설명 할 수 있기를 바랍니다.
관련
감사합니다. 물론 Mecki는 완전히 바보입니다 (두뇌가 튀었지만 변명의 여지가 없습니다). 나는 내가이 사과 페이지 (https://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/CppRuntimeEnv/Articles/SymbolVisibility.html)와 혼동을 겪고 있다고 생각한다. 헤더 파일에 있었거나 __attribute __ ((visibility ("default"))) 또는 무엇을 배치해야 하는지를 보여주는 jsut입니다. 그래서 함수 int를 인라인했다면 예를 들어 숨겨져 있을까요? – themadme
'inline' 함수를 선언했지만 여전히 헤더에 삽입하면, 헤더가 포함 된 곳이면 어디에서나 볼 수 있습니다. 라이브러리 밖에서 보이지 않는 기능을 만들고 싶다면'hidden'으로 선언하고 그것이 프레임 워크 번들의 헤더 파일에 나타나지 않는지 확인하십시오. 프레임 워크의 파일에만 표시되지만 프레임 워크 번들에 복사되지 않으므로 프레임 워크에 링크되는 프로젝트에는 보이지 않는 개인 H 파일을 사용하십시오. – Mecki
지혜 Mecki에게 다시 한 번 감사드립니다. 이제는 집에 돌아가서 내 Windows 프로젝트를 Mac으로 변환하고 Linux를 계속 사용하기를 기다릴 수 없습니다. 다시 한 번 감사드립니다. – themadme