2012-07-20 6 views
0

xcode에서 dylib를 생성하려고합니다. Xcode에서 c/C++ Library 템플릿을 선택하여 dylb를 만들 수 있습니다.init 함수를 사용하여 dylib를 생성하는 방법

이 dylib에 "init"메소드를 추가하고 싶습니다. dylib에 "init"메소드를 추가하는 방법을 모르겠습니다.

제 아이디어는 dlopen()을 사용하여 런타임에이 "init"을 호출하는 것입니다.

귀중한 의견을 보내 주셔서 감사합니다.

+0

을 봤? 그것은 함수입니다! –

답변

0

C++로 코딩하는 경우 dlopen -ed 라이브러리에 정적 객체를 포함 할 수 있습니다. 생성자는 dlopen 시간에 호출됩니다 (소멸자는 dlclose 시간에 실행 중입니다).

이 코드가 gcc (C++에서 또는 심지어 다른 언어를 C에서 그것을, 또는)에 의해 컴파일되어 있으면 constructordestructorfunction attributes

(당신은 오래된 기호를 사용할 수 있습니다 사용할 수 _init_fini하지만이 dlopen의 사용되지 않는 기능 (그리고 아마도에서라도 리눅스에 적어도). 그럼 당신은 C에서 그들에게 extern "C" void _init(void);를 선언해야 ++.)

가 가

이와 그 dlsym 거래를 잊지 마세요입니다이므로 extern "C"을 C++ 이름으로 선언하고자합니다.

동적으로로드 된 것들이 있어야합니다. 예를 들어, my_initialization이라는 함수와 dlopen을 수행하는 코드는 나중에 dlsym을 사용하여 찾을 수 있습니다. 어떤 기호가 dlsym -ed이고 사용법은 문서화 된 규칙을 따라야합니다.

내가 잘에서라도 모르는

,하지만 당신은 방법 init``를 호출 할 이유는 this documentation

+0

감사 Basile Starynkevitch. "초기화"메소드를 작성했습니다. "dlsym"을 사용하여 전화 할 수 있습니다. – user123456789

+0

왜'init' 메소드를 호출할까요? –