1

我有一个由 dll 和 manifest.json 文件组成的 npapi 插件。这个 npapi dll 被检测为 chrome 上的插件,即它列在 about:plugins 页面上。但是,当我使用标记在示例 html 页面中调用此插件时,它显示“插件无法加载”。为什么这个插件无法在 chrome 中加载的任何想法。

谢谢

4

2 回答 2

4

根据您提供的信息,无法肯定地说,但我猜这是两件事之一:

  1. 您的插件可能具有未找到的外部依赖项。如果您要链接到另一个需要 .DLL 文件的库(或者如果您将 /MD 用于 CRT 的 DLL 版本)并且当浏览器尝试加载插件 DLL 时找不到该 DLL,那么您的插件将静默加载失败

  2. 您的插件 DLL 可能正在加载,但随后抛出异常、错误处理等,以致浏览器认为它不是有效的插件。很可能情况并非如此,因为 Chrome 通常会将类似的情况报告为崩溃,而不是缺少插件。不过,您可以通过使用命令行参数 --plugin-startup-dialog 启动 Chrome 来验证这一点,这将导致在加载插件 DLL 之前弹出一个带有 pid 的对话框。然后,您可以附加一个调试器并告诉它继续。

在这两个中,第一个是迄今为止我看到的最常见的问题。您可以通过获取 Dependency Walker (depends.exe) 并就地打开 DLL 以查看缺少的内容来对其进行故障排除。如果你看到 ieshims.dll 忽略它——它总是认为它丢失了,但在浏览器运行时会找到它。

更多关于调试插件的提示可以在http://npapi.com/x/MYAG找到,当然如果你还没有,我建议使用FireBreath框架,它可以解决你可能遇到的大多数 NPAPI 问题。

祝你好运!

于 2011-07-22T05:56:08.743 回答
1

您必须在插件 .rc 文件中定义 MIME 类型。不这样做会阻止插件正确加载:

值“MIMEType”、“应用程序/myapp”

于 2011-09-15T14:11:06.153 回答