我创建了一个NPAPI插件,我将其打包在Chrome扩展程序中。我能够在Windows 2003和Windows XP 64位上成功安装和使用Chrome中的扩展程序。
但是,当我在Windows 7(32位或64位)或Windows XP 32位上安装插件时,我无法在Chrome中使用该扩展程序。 chrome日志显示错误消息“无法初始化插件”。
我在所有环境中运行了依赖性walker,看起来在扩展程序不起作用的环境中,它们都有共同的警告消息“警告:至少有一个模块由于a而导致未解析的导入在延迟负载相关模块中缺少导出功能。“ (有问题的DLL是SHLWAPI.DLL,IEFRAME.DLL和MPR.DLL),而扩展工作的环境没有这个警告(尽管其中一个警告没有找到延迟加载依赖模块)。
这些DLL依赖关系是否应该在不同版本的Windows之间有所不同?解决这些问题的最佳方法是什么?或者插件失败很可能与这些DLL依赖关系无关?
答案 0 :(得分:2)
通过使用“/ MT”编译器标志而不是默认的“/ MD”编译二进制文件来重建项目而不依赖于运行时库。
如果您依赖开源代码,请确保使用“/ MT”标志重建每个项目,否则您将永远追逐这些运行时DLL问题。
答案 1 :(得分:0)
shlwapi和ieframe可能与您的问题无关;看到这些错误是一个常见问题。不确定mpr.dll,还没看过那个。
您可以尝试使用FireBreath插件并比较依赖性walker结果,看看是否可以发现firebreath没有要求的任何内容,因为firebreath没有外部DLL依赖项。