2012-01-16 1 views
1

Что я видел до сих пор, может быть только один плагин за .dll файл, это правильно? Браузер вызывает NP_GetEntryPoints, NP_Initialize и NP_Shutdown только «один раз» для каждой DLL, не так ли?Могу ли я создать несколько плагинов в одной DLL, используя NPAPI?

То, что я стремлюсь, заключается в создании нескольких плагинов в одной динамической библиотеке . Это возможно, и если, как?

+1

Если вы еще не наткнулись, взгляните, что [Firebreath] (http://firebreath.org) соответствует вашему проекту. –

+1

Даже если FireBreath не соответствует вашему проекту, он поддерживает несколько типов mimetypes - вы можете создать плагин firebreath и прореживать, как он это делает. – taxilian

ответ

1

Что я видел до сих пор, может быть только один плагин для DLL-файла, это правильно?

Нет, вы можете иметь несколько плагинов, реализованных в одной DLL.

Браузер вызывает NP_GetEntryPoints, NP_Initialize и NP_Shutdown только «один раз» для каждой DLL, правильно?

Только один раз за процесс и загрузку (имейте в виду, что он будет выгружен, когда экземпляр больше не будет жив).

То, что я стремлюсь, заключается в создании нескольких плагинов в одной динамической библиотеке. Это возможно, и если, как?

Это возможно. Вы просто регистрируете разные типы сопоставлений для одной и той же динамической библиотеки (например, в нескольких записях Mimetype Windows в реестре, указывающих на одну и ту же DLL).

NPP_New() получает NPMIMEType как первый параметр, который позволяет определить, какой «плагин» был запрошен.

Также необходимо настроить NP_GetMIMEDescription() (используется в Linux и Mac OS).

В Windows у вас должен быть список типов mimetypes, разделенных |, в информации о версии (запись MIMEType).

+0

Где/когда называется 'NP_GetMIMEDescription'? Я вижу [docs] (https://developer.mozilla.org/en/NP_GetMIMEDescription), но нет ничего о том, где реализовать эту функцию. –

+1

@Niklas: * «Он работает в Unix (Linux) и MacOS». * –

 Смежные вопросы

  • Нет связанных вопросов^_^