NPAPI加载第三方DLL

时间:2012-07-29 16:26:12

标签: npapi

我正在开发一个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的Plugins目录中,它告诉我它找不到插件。我想知道如何解决这个问题。

谢谢,请原谅我可怜的英语。

1 个答案:

答案 0 :(得分:2)

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

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

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

要安装,而不是将插件放在firefox(或safari)目录的plugins /目录中,您应该install it through the windows registry。这将使它对firefox,chrome和safari可见。

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