xcode에서 dylib를 생성하려고합니다. Xcode에서 c/C++ Library 템플릿을 선택하여 dylb를 만들 수 있습니다.init 함수를 사용하여 dylib를 생성하는 방법
이 dylib에 "init"메소드를 추가하고 싶습니다. dylib에 "init"메소드를 추가하는 방법을 모르겠습니다.
제 아이디어는 dlopen()을 사용하여 런타임에이 "init"을 호출하는 것입니다.
귀중한 의견을 보내 주셔서 감사합니다.
xcode에서 dylib를 생성하려고합니다. Xcode에서 c/C++ Library 템플릿을 선택하여 dylb를 만들 수 있습니다.init 함수를 사용하여 dylib를 생성하는 방법
이 dylib에 "init"메소드를 추가하고 싶습니다. dylib에 "init"메소드를 추가하는 방법을 모르겠습니다.
제 아이디어는 dlopen()을 사용하여 런타임에이 "init"을 호출하는 것입니다.
귀중한 의견을 보내 주셔서 감사합니다.
C++로 코딩하는 경우 dlopen
-ed 라이브러리에 정적 객체를 포함 할 수 있습니다. 생성자는 dlopen
시간에 호출됩니다 (소멸자는 dlclose
시간에 실행 중입니다).
이 코드가 gcc
(C++에서 또는 심지어 다른 언어를 C에서 그것을, 또는)에 의해 컴파일되어 있으면 constructor
및 destructor
function attributes
(당신은 오래된 기호를 사용할 수 있습니다 사용할 수 _init
및 _fini
하지만이 dlopen
의 사용되지 않는 기능 (그리고 아마도에서라도 리눅스에 적어도). 그럼 당신은 C에서 그들에게 extern "C" void _init(void);
를 선언해야 ++.)
이와 그 dlsym
거래를 잊지 마세요입니다이므로 extern "C"
을 C++ 이름으로 선언하고자합니다.
동적으로로드 된 것들이 있어야합니다. 예를 들어, my_initialization
이라는 함수와 dlopen
을 수행하는 코드는 나중에 dlsym
을 사용하여 찾을 수 있습니다. 어떤 기호가 dlsym
-ed이고 사용법은 문서화 된 규칙을 따라야합니다.
,하지만 당신은 방법 init``를 호출 할 이유는 this documentation
감사 Basile Starynkevitch. "초기화"메소드를 작성했습니다. "dlsym"을 사용하여 전화 할 수 있습니다. – user123456789
왜'init' 메소드를 호출할까요? –
을 봤? 그것은 함수입니다! –