작성일: 2013-04-01
1. 들어가며 #
NPAPI과 NPRuntime에 대해 알고 싶으면 여기[1][2] 등을 참조하면 된다. 요약하면 옛날 넷스케이프 시절 개발되던 플러그인 API가 이후 모질라 계열 브라우저에서 계속 남아있어서 파이어폭스, 크롬, 사파리, 오페라에서 지원하게 되었고 따라서 NPAPI 플러그인을 만들면 IE를 제외한 대부분의 브라우저에서 돌아가게 된 것이다. NPRuntime은 플러그인에서 웹브라우저로 명령을 전달해 줄 수 있는 NPAPI의 확장버전이다. 즉 NPAPI+추가API의 형태다.
이 페이지에서는 2013년 4월 1일 현재 최신 Gecko SDK[3](19.0.2)와 최신 비주얼 스튜디오(VS2008/2010/2012)를 사용한 NPAPI Hello world 를 만드는 방법을 소개한다. Gecko SDK 1.9 부터 프로젝트 구성 방법과 헤더와 타입이 많이 바뀌었기 때문에 1.9 버전 예제들은 변경이 필요하다. 이에 대한 자세한 방법을 소개한다.
2.1. 다운로드 #
https://developer.mozilla.org/en-US/docs/Gecko_SDK
1. Get SDK for Windows
2. 특정 디렉토리에 압축을 해제한다.
3. 압축을 해제한 곳으로 VC++ 포함 파일 디렉터리를 설정한다.
1. Get SDK for Windows
2. 특정 디렉토리에 압축을 해제한다.
3. 압축을 해제한 곳으로 VC++ 포함 파일 디렉터리를 설정한다.
\xulrunner-sdk\include
3.3. 파일 추가 #
모듈 정의 파일 (.def)
리소스 파일 (.rc)
리소스 파일 (.rc)
Sources
np_entry.cpp
npn_gate.cpp
npp_gate.cpp
plugin.cpp
np_entry.cpp
npn_gate.cpp
npp_gate.cpp
plugin.cpp
Header
plugin.h
plugin.h
3.4. 코드 추가 #
npHelloPlugin.def
npHelloPlugin.rc
np_entry.cpp
예제 프로젝트 참조
예제 프로젝트 참조
npn_gate.cpp
예제 프로젝트 참조
예제 프로젝트 참조
npp_gate.cpp
예제 프로젝트 참조
예제 프로젝트 참조
plugin.cpp
예제 프로젝트 참조
예제 프로젝트 참조
plugin.h
예제 프로젝트 참조
예제 프로젝트 참조
3.7. 조건 #
1. 플러그인 dll 파일 이름이 반드시 np로 시작해야 한다.
2. 리소스(.rc)의 빌드 언어 설정(코드 페이지)이 영어(미국)이여야만 한다. (한글이라면 크롬에서는 플러그인으로 인식하지만 파이어폭스에서는 플러그인을 찾을 수 없다.)
4.1. 메서드 추가 #
TestMethod1 라는 메서드를 만들어 보자.
1. plugin.cpp
식별자 추가
식별자 추가
bool HasMethod()
bool Invoke()
* NPAPI 플러그인에서 메모리 할당은 반드시 NPN_MemAlloc을 써야한다.
----
- [1] http://theweak.tistory.com/1
- [2] http://breakstone.blog.qrobo.com/2009/05/28/npruntime-0-compile/
- [3] XULRunner SDK로도 알려져 있다.