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 ファイルの 1 つが見つからないという問題がありました。依存関係の dll ファイルを system32 ディレクトリにコピーしてみてください (永続的ではなく、それが問題かどうかを確認するためだけです)。そこにそれを見つけることができると期待しています。

それが問題である場合、残念ながら修正方法はわかりませんが、役立つかもしれません。

サイド バイ サイド構成の問題に基づく別の可能性は、Visual Studio プロジェクトがマニフェストを作成していて、Windows 7 にはない DLL の 1 つの特定のバージョンが必要であることを Windows に伝えていることです。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 に答える