플러그인은 메인 프로그램이 제어하는 프로그램의 일부가 될 수 있는 코드이다. C 또는 C++ 프로그램의 경우 일반적으로 플러그인은 기본프로그램에서 동적으로 로드(및 언로드)하는 공유 라이브러리로 구현된다.
플러그인 기반 소프트웨어 설계는 프로그램을 안전한 방식으로 확장하고 발전시킬 수 있다. 즉, 핵심 기능을 불안정하게 할 위험 없이 기능을 추가 할 수 있다. 또한 리스크 분리, 구현 세부 사항 숨기기, 격리 된 테스트 및 기타 여러 이점들을 얻을 수 있다.
플러그인 모델을 적용한 몇 가지 예로 크롬 웹 브라우저 웹스토어에 있는 수많은 확장 프로그램, 이미지 처리 응용 프로그램 (예: Adobe Photoshop) 용 확장 프로그램, 운영 체제 (예: Linux 모듈) 용 동적로드 가능한 디바이스 드라이버 등이 있다.
▲Chrome 웹 스토어
그러면 C++ 플러그인 시스템을 개발할 때 알아 두어야 하는 핵심 포인트 몇가지를 살펴보자.
C++ 플러그인 모델을 적용하기 위해 직접 구현 할 수도 있겠지만 이미 관련된 오픈 소스 라이브러리 또는 프레임워크를 사용 해보는 것도 시간을 아끼는 좋은 방법이 될 수 있겠다.
크로스플랫폼 응용프로그램 프레임워크인 Qt는 매우 유용한 플러그인 솔루션을 제공한다.libuv는 공유라이브러리를로드하고 라이브러리에서 심볼을 검색하기위한 크로스플랫폼용 API를 제공한다. 그 밖에도 역시 크로스 플랫폼을 지원하는 DynObj, Pluma등이 있다.
Linux 및 Windows에서 동작하는 C++ 예제: plugin_api.zip