2010-12-08 127 views
2

我有一个NPAPI插件,我已经使用Firefox 3.x写了一段时间,并且没有任何问题。Windows 7中的NPAPI插件问题

对象的定义如下 -

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

然后我打电话请使用以下格式它的方法 -

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

这是我的理解它应该做的事,并一直工作得很好。不过,我最近安装了Windows 7的机器上此相同的插件(具有相同版本的Firefox),现在无法找到在插件定义的函数,所以我得到了下面的错误 -

错误:文件。 getElementById(“pluginobj”)。someMethod不是函数

插件中没有任何改变,这个错误发生在被调用的任何方法上,而不是一个特定的方法,它在Windows XP机器上依然可以正常工作没有问题。

非常困惑!谁能帮忙?谢谢。

注:我也试过我的插件内的记录,它似乎它甚至没有获得到NP_Initialize和NP_GetEntryPoints方法。

我已经看到一些建议,它可能是与依赖和库链接到插件,但我不知道什么可能会失踪赢7?

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

+0

你能指定FF的确切版本吗?从FF 3.6.4开始,插件将在不同的过程中启动,可能与您的问题有关。您是否在Windows 7上的Chrome中试用了您的插件? – DReJ 2010-12-08 10:33:14

+0

FF是版本3.6.12 - 我在我的XP系统上运行的相同版本没有问题... – 2010-12-08 10:46:55

回答

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的方式来解决这个问题,所以我在去年并不需要担心它。您可以考虑查看可在IE和Firefox(activex和npapi)上运行的FireBreath,并且有一个非常好的社区来跟踪这样的问题。