와 라이브러리를 공유 유닉스의 상단에, 내가로드하고 다음과 같이 어느 정도 공유 라이브러리를 사용하여 :유닉스 프로그래밍 : C에서 작업 라이브러리
...
handle = dlopen("nameOfLib");
...
libInit();
...
libGoToState1();
libGoToState2();
....
libTerminate();
...
dlclose(handle);
...
내가하고 싶은 것은 '인정하는 내 응용 프로그램입니다 플러그인 '은 주어진 API를 준수하는 동적으로로드 할 수있는 라이브러리의 형태를 취합니다.
까다로운 부분은 내가 libInit()
를 호출 한 후 플러그인을로드 할 것입니다 그리고 나는 응용 프로그램으로 라이브러리의 상태를 변경,하지만 같은 '세션'을 활용, 플러그인이 libGoToSomeOtherState()
를 호출 할 수 있도록하려는 그것을 적재했다.
코딩 방법에 대한 의견을 보내 주시면 감사하겠습니다.
특히, 라이브러리 인스턴스, 주 및 모든 것을 공유하기 위해 플러그인 및 주 프로그램의 .c 파일로 이동해야하는 항목은 무엇입니까? 이것이 당신이 찾고있는 정확하게이지만, C 프로그램에 대한 간단한 플러그인을 작성하는 방법에 대한 기사가 며칠 전 레딧에 게시 된 경우
관련 : http://stackoverflow.com/questions/1602398/linux-dlopen-can-a-library-be-notified-when-it-is-loaded – jldupont
"-Wl, - export가 필요합니다. 동적 라이브러리 호출을 exe 자체로 되돌리려면 실행 파일을 링크 할 때 -dynamic 옵션을 사용하십시오. 그 재미있는 블로그에 –