请问在如何使用XulRunner SDK 开发firefox(Windows版)的插件

fly4free 2014-12-25 02:32:01
搜索 xulrunner plugin 倒是能搜出来挺多结果。
最近一直在搜索教程,但各种教程,包括官网的教程的细节(如 附加头文件目录的设置)都各有不同。
我一开始下载的是 xulrunner 34.0.5 版本的sdk,不过在教程提到的链接下载的 sample项目 npruntime,编译不过去。
因为有些头文件,在这个sdk里不存在。

后来找到一个带了配套sdk版本的教程(使用firefox-4.0.1.source里modules\plugin目录下的文件),最后编译成功。可是我把它放进 mozilla firefox ( 34.0.5 版本离线安装) 中的plugins目录下后 查看插件信息(about:plugins),没效果。(plugins目录安装后不存在,我现建立的。),这个教程提到了注册表信息,可是关键的根键没有,我只好在Mozilla下建立一个Plugins子键,然后建立了“@whuiss.com/npTest” 这样的子键指定了插件dll的Path值,也无效果。我不明白为什么有的教程没有提到这个注册表信息。

我就怀疑,是不是当前浏览器版本太新了,导致不生效,我又在新下的 firefox-34.0.5.source 里搜索 npruntime,倒是搜索出 npruntime.h文件,在 mozilla-release\dom\plugins\base 下,一看就没啥关系啊,或者我不知道有什么可用的关系。而这个版本目录框架却没有了modules\plugin 目录。。

看官网MDN内容,没像chrome似的要封杀npapi,哪位大神指导一下,如何使用最新的sdk开发plugins?
如果所使用的sdk版本与mozilla firefox版本有什么关系的话,能把关键的地方告知的话万分感谢,因为我也不知道客户实际上使用的是哪个版本。
...全文
617 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly4free 2015-08-28
  • 打赏
  • 举报
回复
引用 3 楼 firebolt009 的回复:
前6个link error是因为你编译的是debug版本,而你链接的是xulrunner sdk的release版本所致,解决的方法如下(二选一): 1、在你的debug Preprocessor中设置_ITERATOR_DEBUG_LEVEL = 0即可 2、使用release编译,如果你想调试,将优化选项disable即可 后3个link error应该是因为你使用的链接库的问题,解决的方法是: 不应该使用xpcomglue.lib,而是xpcomglue_s.lib
根据的第一个方法,再加上自己摸索出来要引用若干 .lib文件,是编译过去了。
firebolt 2015-06-18
  • 打赏
  • 举报
回复
前6个link error是因为你编译的是debug版本,而你链接的是xulrunner sdk的release版本所致,解决的方法如下(二选一): 1、在你的debug Preprocessor中设置_ITERATOR_DEBUG_LEVEL = 0即可 2、使用release编译,如果你想调试,将优化选项disable即可 后3个link error应该是因为你使用的链接库的问题,解决的方法是: 不应该使用xpcomglue.lib,而是xpcomglue_s.lib
fly4free 2015-03-03
  • 打赏
  • 举报
回复
这个问题还没解决。 但是在firefox源码里找到一个 nsSample ,位置: firefox-34.0.5.source\mozilla-release\xpcom\sample 我使用 pyxpidl命令(header.py, typelib.py命令)在python 2.7.9环境下生成了相关代码文件。 然后我使用了xulrunner sdk 34.0.5,里面的头文件与库文件, 利用这些代码文件与库目录,我建立了VS2010的Win32 Dll工程,没有自定义任何 预处理器 项目, 导入库“mozalloc.lib xpcomglue.lib”,因为没有 xpcom.lib,我也不知道该用哪个,但是这种设置链接不过去。 错误提示:

1>xpcomglue.lib(nsMemory.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(nsSample.obj 中)
1>xpcomglue.lib(nsXPCOMGlue.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(nsSample.obj 中)
1>xpcomglue.lib(nsStringAPI.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(nsSample.obj 中)
1>xpcomglue.lib(FileUtils.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(nsSample.obj 中)
1>xpcomglue.lib(nsCRTGlue.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(nsSample.obj 中)
1>xpcomglue.lib(nsTArray.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(nsSample.obj 中)
1>nsSample.obj : error LNK2001: 无法解析的外部符号 "public: virtual enum tag_nsresult __thiscall GenericClassInfo::QueryInterface(struct nsID const &,void * *)" (?QueryInterface@GenericClassInfo@@UAE?AW4tag_nsresult@@ABUnsID@@PAPAX@Z)
1>nsSample.obj : error LNK2001: 无法解析的外部符号 "public: virtual unsigned int __thiscall GenericClassInfo::AddRef(void)" (?AddRef@GenericClassInfo@@UAEIXZ)
1>nsSample.obj : error LNK2001: 无法解析的外部符号 "public: virtual unsigned int __thiscall GenericClassInfo::Release(void)" (?Release@GenericClassInfo@@UAEIXZ)
(... 略)
(我的感觉是 XPCOM 变化如此之快,试了好几个版本我都没有编译成功,即使编译成功也没应用成功过。。 目前网上的教程都不适用当前的源码版本……头大啊)
Cheris2014 2014-12-26
  • 打赏
  • 举报
回复
等大神。。。

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧