Плагин NPAPI не загружается в Chrome

У меня есть плагин npapi, состоящий из dll и файла manifest.json. Эта npapi dll определяется как плагин в Chrome, т.е. она указана на странице about:plugins. Однако, когда я вызываю этот плагин на образце html-страницы с помощью тега, он говорит: «Плагин не удалось загрузить». Любые идеи, почему этот плагин не загружается в Chrome.

Спасибо


person Rashmi K    schedule 22.07.2011    source источник


Ответы (2)


С предоставленной вами информацией невозможно сказать наверняка, но я предполагаю, что это одна из двух вещей:

  1. Ваш плагин может иметь внешнюю зависимость, которая не найдена. Если вы связываетесь с другой библиотекой, для которой требуется файл .DLL (или если вы используете /MD для DLL-версии CRT), и DLL не может быть найдена, когда браузер пытается загрузить DLL плагина, тогда ваш плагин молча не загружается

  2. DLL вашего плагина может загружаться, но затем выдавать исключение, неправильно обрабатывать вещи и т. д. таким образом, что браузер решает, что это недействительный плагин. Скорее всего, это не так, поскольку Chrome обычно сообщает о чем-то подобном как о сбое, а не об отсутствующем плагине. Однако вы можете убедиться в этом, запустив Chrome с аргументом командной строки --plugin-startup-dialog, который вызовет всплывающее диалоговое окно с pid перед загрузкой DLL плагина. Затем вы можете подключить отладчик и сказать ему продолжить.

Из этих двух первая, безусловно, самая распространенная проблема, которую я вижу. Вы можете устранить неполадки, загрузив Dependency Walker (depends.exe) и открыв DLL на месте, чтобы увидеть, чего не хватает. Если вы видите, что ieshims.dll игнорирует его - он всегда думает, что отсутствует, но находит его, когда работает браузер.

Дополнительные советы по отладке подключаемых модулей можно найти на странице http://npapi.com/x/MYAG. если вы еще этого не сделали, я бы рекомендовал использовать структуру FireBreath, которая решает большинство проблем с NPAPI, с которыми вы можете столкнуться. .

Удачи!

person taxilian    schedule 22.07.2011
comment
Спасибо за ответ. Я запустил обходчик зависимостей для моей dll, и он говорит об ошибке при открытии файлов: «msvcr80.dll, msvcp80.dll, msvcr80d.dll и msvcp80d.dll». Однако эти файлы присутствуют в моей системе. Тогда в чем ошибка? Это как-то связано с тем, как я создаю эту dll? Я использую Visual Studio 2005 и для этого выпускаю конфигурацию сборки. - person Rashmi K; 22.07.2011
comment
К вашему сведению, Chrome (если это не было недавно изменено) сообщит о плагине как об отсутствующем, если он выйдет из строя во время инициализации. - person smorgan; 22.07.2011
comment
упомянутые вами библиотеки DLL - это библиотеки CRT; Я бы рекомендовал изменить его на статическую ссылку на CRT вместо динамической для плагина, и это может помочь. - person taxilian; 22.07.2011
comment
--plugin-startup-dialog прекрасно помогает при отладке разработки плагинов. - person Shane Holloway; 03.05.2012
comment
Привет, сталкиваюсь с той же проблемой. Как сделать статическую ссылку на CRT - person Buzz LIghtyear; 02.07.2013
comment
Комментарии другого вопроса не место, чтобы задать вопрос - person taxilian; 02.07.2013
comment
У меня такая же проблема. Я запустил обходчик зависимостей, и он говорит, что мне не хватает этих: API-MS-WIN-CORE-COM-L1-1-0.DLL API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL API -MS-WIN-CORE-WINRT-L1-1-0.DLL API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL API-MS-WIN-CORE-WINRT-STRING-L1-1 -0.DLL API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL DCOMP.DLL GPSVC.DLL IESHIMS.DLL Можно ли их игнорировать с помощью IESHIMS.DLL? - person Joel; 14.08.2013

Вы должны определить тип MIME в файле плагина .rc. В противном случае плагин не сможет правильно загрузиться:

ЗНАЧЕНИЕ "MIMEType", "application/myapp"

person Emmanuel Caradec    schedule 15.09.2011
comment
Наличие ресурса VERSIONINFO необходимо для того, чтобы он был указан в качестве подключаемого модуля в Windows в Chrome about:plugins. Наличие записи MIMEType имеет решающее значение для возможности ее вызова! - person Shane Holloway; 03.05.2012