2

我有一个 NPAPI 插件,我已经编写并在 Firefox 3.x 上使用了一段时间,没有任何问题。

该对象定义如下 -

<object class="someClass" id="pluginobj" type="application/x-plugintype"></object>

然后我使用以下格式调用它的方法 -

if( document.getElementById("pluginobj") != null )
{
    document.getElementById("pluginobj").someMethod(someParams));
}

这就是我理解它应该完成的方式并且一直运行良好。但是,我最近在 Windows 7 机器(使用相同版本的 Firefox)上安装了相同的插件,现在找不到插件中定义的功能,所以我收到以下错误 -

错误:document.getElementById("pluginobj").someMethod 不是函数

插件内没有任何变化,任何被调用的方法都会发生此错误,而不是特定的方法,并且它在 Windows XP 机器上仍然可以正常工作,没有任何问题。

很迷茫!有人可以帮忙吗?谢谢。

注意:我也尝试过登录我的插件,它似乎甚至没有进入 NP_Initialize 和 NP_GetEntryPoints 方法。

我已经看到了一些建议,可能是依赖项和库链接到插件,但我不确定 win 7 上可能缺少什么?

Dependency Walker 显示“并排配置信息不正确”的错误?

4

1 回答 1

0

您是否从您的 npapi 插件链接到其他 DLL 文件?Windows 7 查找 DLL 文件的方式有所不同,但我不知道细节。过去我用插件看到过这个问题的问题是在 Windows 7 上找不到其中一个 dll 文件。您可以尝试将依赖 dll 文件复制到您的 system32 目录(不是永久的,只是看看是否是问题所在)。我希望它能够在那里找到它。

如果这是问题,不幸的是我不确定如何解决它,但它可能会有所帮助。

基于并行配置问题的另一种可能性是您的 Visual Studio 项目正在创建一个清单,该清单告诉 Windows 它需要 Windows 7 上不存在的某个 DLL 的特定版本。请参阅:http ://buffered.io/2008/05/17/resolving-side-by-side-configuration-issues/

我想我之前通过禁用清单已经在插件中解决了这个问题。我不知道; FireBreath生成 npapi 插件 dll的方式我从来没有遇到过这个问题,所以去年我不需要担心它。您可能会考虑查看FireBreath,它适用于 IE 和 Firefox(activex 和 npapi),并且有一个非常好的社区可以跟踪此类问题。

于 2010-12-08T16:16:08.253 回答