Спасибо за помощь и предложения.
Мне удалось выяснить, почему мой плагин не был вызван, , даже если я поместил файл .so в правильные папки /usr/lib/mozilla/plugins/и Qt Lib path.
Были 2 причины ...
пришлось включить Определить XP_UNIX (-DXP_UNIX) во время компиляции в качестве директивы компилятора. Это будет рассматривать различные прототипы функций, а также реализация
extern "C"
NPError OSCALL NP_Initialize(NPNetscapeFuncs *browserFuncs
#ifdef XP_UNIX
, NPPluginFuncs *pluginFuncs
#endif
)
{
// keep a pointer to the browser functions
g_browser = browserFuncs;
// any memory that is to be shared by all instances of
the browser plugin should be initialized here.
;
#ifdef XP_UNIX
// under Linux, as the browser won't call NP_GetEntryPoints()
explicitly, do it now to fill in <pluginFuncs>
return NP_GetEntryPoints(pluginFuncs);
#else
return NPERR_NO_ERROR;
#endif
}
и
extern "C"
#ifdef XP_UNIX
NPError NP_GetValue(void* instance, NPPVariable variable, void *value)
#else
NPError NP_GetValue(NPP instance, NPPVariable variable, void *value)
#endif
2 .. Были 2 функции NP_GetValue и NPP_GetValue.
extern "C"
NPError NP_GetValue(void* instance, NPPVariable variable, void *value);
и
NPError NPP_GetValue(NPP instance, NPPVariable variable, void *ret_value);
NPP_GetValue функция плагин, регистрация должна быть сделана в NP_GetEntryPoints
extern "C"
NPError OSCALL NP_GetEntryPoints(NPPluginFuncs* NPPluginFuncsptr)
{
......
NPPluginFuncsptr->newp = NPP_New;
NPPluginFuncsptr->getvalue = NPP_GetValue;
NPPluginFuncsptr->setvalue = NPP_SetValue;
return NPERR_NO_ERROR;
}
В моем коде только NP_GetValue был реализован и NPP_GetValue не был реализован. Так что NPP_GetValue не был определен в .so, и из-за этого .so не загружался.
При реализации функции NPP_GetValue эта функция была определена и экспортирована в файл .so и была успешно загружена.
последовательности вызова функций из браузера плагина выглядит следующим образом ...
NP_Initialize -> Браузер вызывает функцию инициализации первым. (В случае Linux множество функций плагина должна быть экспортирована по телефону NP_GetEntryPoints Как браузер в явной форме не будет вызывать GetEntryPoints)
NP_GetEntryPoints -> Called явно из NP_Initialize для Linux в разоблачить/экспорта функции плагина.
переменная NP_GetValue: 1 -> Вызывается из браузера получить Plugin Name (NPPVpluginNameString)
переменная NP_GetValue: 2 -> Вызывается из браузера получить Plugin Описание (NPPVpluginDescriptionString)
NP_GetMimeDescription -> Вызывается из браузера, чтобы получить MimeType Описание (Эта функция должна возвращать описание типа Mime например: return («application/basic-plugin: bsc: пример SDK SDK»);)
NPP_New -> Вызывается из браузера для создания экземпляра плагина.
NPP_GetValue PLUGIN: main.cpp, NPP_GetValue, 446ENTRY -> Вызывается из браузера, чтобы получить конкретные данные плагин ...
......
Пожалуйста, обратите внимание, что следующая функция в приведенной выше последовательности будет называться IF и ТОЛЬКО ЕСЛИ предыдущий вызов функции возвращает успех. :-)
это появляется примерно в: плагинах? – taxilian
Привет Это не отображается в: плагины в mozilla. Я не могу понять, почему ..... – Techtotie
попробуйте загрузить firefox в режиме отладки (firefox -g); вы можете увидеть что-то полезное в выходе. Когда вы добираетесь до консоли gdb, просто введите run – taxilian