2012-09-06 148 views
0

我创建了一个我在Chrome扩展中打包的NPAPI插件。我能够在Windows 2003和Windows XP 64位版本的Chrome上成功安装和使用扩展。NPAPI插件Windows DLL依赖关系

但是,当我在Windows 7(32位或64位)或Windows XP 32位上安装插件时,我无法在Chrome中使用该扩展。铬日志显示错误消息“无法初始化插件”。

我在我的所有环境中运行了依赖关系walker,它看起来像扩展不起作用的环境,它们都具有共同的警告消息“警告:至少有一个模块导致未解析的导入延迟负载相关模块中缺少导出功能。“ (该DLL的问题是SHLWAPI.DLL,IEFRAME.DLL和MPR.DLL),而扩展工作的环境没有这个警告(尽管其中一个警告没有找到延迟加载依赖模块)。

这些DLL依赖关系是否应该在不同版本的Windows之间有所不同?解决它们的最好方法是什么?或者,插件失败很可能与这些DLL依赖关系无关?

回答

0

shlwapi和ieframe可能与您的问题无关;看到这些错误是一个常见问题。不确定关于mpr.dll,还没有看到那个。

你可以尝试一个FireBreath插件并比较依赖walker的结果,看看你是否可以发现你需要的东西firebreath没有,因为firebreath没有外部DLL依赖关系。

2

通过使用“/ MT”编译器标志而不是默认的“/ MD”编译您的二进制文件,重建您的项目而不依赖于运行时库。

如果你依赖开源代码,请确保使用“/ MT”标志重建每个项目,否则你将永远追逐这些运行时DLL问题。