Google chrome extension chrome上未加载NPAPI插件

Google chrome extension chrome上未加载NPAPI插件,google-chrome-extension,npapi,browser-plugin,Google Chrome Extension,Npapi,Browser Plugin,我有一个由dll和manifest.json文件组成的npapi插件。此npapi dll在chrome ie上被检测为插件,它列在关于:插件页面上。然而,当我使用标签在示例html页面中调用这个插件时,它会说“插件加载失败”。 你知道为什么这个插件不能在chrome中加载吗 谢谢您提供的信息无法确定,但我想这是两件事之一: 你的插件可能有一个找不到的外部依赖项。如果您正在链接到另一个需要.DLL文件的库(或者如果您正在使用/MD作为CRT的DLL版本),并且在浏览器尝试加载插件DLL时找不到该

我有一个由dll和manifest.json文件组成的npapi插件。此npapi dll在chrome ie上被检测为插件,它列在关于:插件页面上。然而,当我使用标签在示例html页面中调用这个插件时,它会说“插件加载失败”。 你知道为什么这个插件不能在chrome中加载吗


谢谢

您提供的信息无法确定,但我想这是两件事之一:

  • 你的插件可能有一个找不到的外部依赖项。如果您正在链接到另一个需要.DLL文件的库(或者如果您正在使用/MD作为CRT的DLL版本),并且在浏览器尝试加载插件DLL时找不到该DLL,那么您的插件将自动加载失败

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

  • 在这两个问题中,第一个是我所看到的最常见的问题。您可以通过获取Dependency Walker(dependence.exe)并在适当的位置打开DLL以查看缺少的内容来进行故障排除。如果您看到ieshims.dll,请忽略它——它总是认为缺少它,但在浏览器运行时会找到它

    关于调试插件的更多提示可以在上找到,当然,如果您还没有找到,我建议您使用这个框架,它可以解决您可能遇到的大多数NPAPI问题


    祝你好运

    根据您提供的信息,无法确定,但我想这是两件事之一:

  • 你的插件可能有一个找不到的外部依赖项。如果您正在链接到另一个需要.DLL文件的库(或者如果您正在使用/MD作为CRT的DLL版本),并且在浏览器尝试加载插件DLL时找不到该DLL,那么您的插件将自动加载失败

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

  • 在这两个问题中,第一个是我所看到的最常见的问题。您可以通过获取Dependency Walker(dependence.exe)并在适当的位置打开DLL以查看缺少的内容来进行故障排除。如果您看到ieshims.dll,请忽略它——它总是认为缺少它,但在浏览器运行时会找到它

    关于调试插件的更多提示可以在上找到,当然,如果您还没有找到,我建议您使用这个框架,它可以解决您可能遇到的大多数NPAPI问题


    祝你好运

    您必须在plugin.rc文件中定义MIME类型。否则将阻止插件正确加载:

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


    您必须在plugin.rc文件中定义MIME类型。否则将阻止插件正确加载:

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


    谢谢你的回复。我确实对我的dll运行了dependency walker,它显示打开文件时出错:“msvcr80.dll、msvcp80.dll、msvcr80d.dll和msvcp80d.dll”。但是,这些文件存在于我的系统中。那么错误是什么呢?它与我如何构建这个dll有什么关系吗?我正在使用Visual studio 2005并为此发布构建配置。仅供参考,如果插件在初始化过程中崩溃,Chrome将(除非最近更改)报告插件丢失。您提到的DLL是CRT DLL;我建议将插件更改为静态链接到CRT,而不是动态链接,这可能有助于
    --插件启动对话框
    对调试插件开发非常有帮助。您好,我遇到了同样的问题。如何静态链接到CRTThanks进行回复。我确实对我的dll运行了dependency walker,它显示打开文件时出错:“msvcr80.dll、msvcp80.dll、msvcr80d.dll和msvcp80d.dll”。但是,这些文件存在于我的系统中。那么错误是什么呢?它与我如何构建这个dll有什么关系吗?我正在使用Visual studio 2005并为此发布构建配置。仅供参考,如果插件在初始化过程中崩溃,Chrome将(除非最近更改)报告插件丢失。您提到的DLL是CRT DLL;我建议将插件更改为静态链接到CRT,而不是动态链接,这可能有助于
    --插件启动对话框
    对调试插件开发非常有帮助。您好,我遇到了同样的问题。如何静态链接到Chrome,在Chrome的“关于:插件”中,需要将
    VERSIONINFO
    资源列为Windows上的插件。拥有
    MIMEType
    条目对于能够真正调用它至关重要!拥有
    VERSIONINFO
    资源需要在Chrome的
    about:plugins
    中作为Windows上的插件列出。拥有
    MIMEType
    条目对于能够真正调用它至关重要!