0

NPAPI Firefox プラグインを開発していますが、質問があります。

サードパーティの DLL (D:\mydll.dll など) をロードする必要がありますが、一部のコンピューターでは mydll.dll がシステム パスまたは c:\windows\system32 になく、ロード エラーが発生します。

コードは次のとおりです。

SetCurrentDirectory ("d:\");
m_hModule = LoadLibrary ("mydll.dll");

LoadLibrary は 126 を返します。依存モジュールを表示するために DEPENDS.EXE をチェックしたところ、すべて問題ないように見えました。何が問題なのかわかりません。

もう 1 つの問題は、プラグインを Safari で動作させたいことです (私のサファリはバージョン 5.17 です)。それを Safari の Plugins ディレクトリにコピーすると、プラグインが見つからないことがわかります。これを解決する方法を知りたいです。

ありがとうございます。下手な英語をお許しください。

4

1 に答える 1

2

プロセスを所有していないため、現在のディレクトリの設定は、プラグイン内では常に機能するとは限りません。必要なコマンドはSetDllDirectoryです。

SetDllDirectory("D:\");
m_hModule = LoadLibrary("mydll.dll");

もちろん、DLL がドライブのルートにあると想定することはお勧めしません =] 私がすることは、必要な DLL をプラグイン DLL と同じディレクトリに置くことです。GetModuleFilenameを使用する DLL 。

インストールするには、プラグインを firefox (または safari) ディレクトリの plugins/ ディレクトリに置くのではなく、Windows レジストリからインストールする必要があります。これにより、Firefox、Chrome、Safari で表示されるようになります。

NPAPI インターフェイスを自分で実装する代わりに、FireBreathの使用を検討することをお勧めします。扱いにくい部分のほとんどを処理し、プラグインの重要な部分に集中できるようにします。

于 2012-07-30T04:00:37.813 に答える