我正在开发一个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目录中,它告诉我它找不到插件。我想知道如何解决这个问题。
谢谢,请原谅我可怜的英语。
答案 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接口;它会处理大部分棘手的部分,让您可以专注于插件的重要部分。