0

我正在开发一个 NPAPI Firefox 插件,我有一个问题。

我需要加载第三方 DLL(例如 D:\mydll.dll),但在某些计算机上 mydll.dll 不在系统路径或 c:\windows\system32 中,并且出现加载错误。

这是代码:

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

LoadLibrary 返回 126。我检查了 DEPENDS.EXE 以查看依赖模块,一切看起来都很好。我不知道问题是什么。

另一个问题是我希望插件在 Safari 中工作(我的 safari 是 5.17 版)。我将它复制到 Safari 的插件目录中,它告诉我找不到插件。我想知道如何解决这个问题。

谢谢,请原谅我糟糕的英语。

4

1 回答 1

2

在插件中设置当前目录并不总是有效,因为您不拥有该进程。您想要的命令是SetDllDirectory

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

当然,我不建议您假设 DLL 位于驱动器的根目录中 =] 我要做的是将您需要的 DLL 与插件 DLL 放在同一目录中,然后您可以获得DLL 使用GetModuleFilename

对于安装,而不是将插件放在 firefox(或 safari)目录中的 plugins/ 目录中,您应该通过 windows 注册表安装它。这将使它对 firefox、chrome 和 safari 可见。

您可能需要考虑使用FireBreath而不是自己实现 NPAPI 接口;它处理了大部分棘手的部分,让您可以专注于插件的重要部分。

于 2012-07-30T04:00:37.813 回答