2010-12-08 126 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,並且有一個非常好的社區來跟蹤這樣的問題。