在编写mozilla的相关程序时链接有三种方式,两种外部链接的方法和一种内部链接的方法。当定义了MOZILLA_INTERNAL_API时,会启用内部链接,而且不能使用dist/include/string/*中定义的字符串处理函数,而只能使用dist/include/xpcom/nsStringAPI.h等头文件中定义的。因为mozilla和设置string/*.h中的接口为local(用nm libxul.so看到字符串相关函数的符号的类型为t),在libxul中不会导出(export)。还有一些接口是没法直接使用的,比如nsIHTMLDocuemnt.官方建议采用外部链接的方式,而且虽然有些接口没法直接使用,但是基本上在外部链接的时候,总有其他方式可以达到相同的目的。
外部链接有dependent glue和standalone glue两种。前者一般用于XPCOM模块、扩展或者xulrunner组件等。使用libxpcomglue_s.so和libxpcom.so。后者不直接依赖xpcom库,而是通过GRE相关函数查询可用的库。这种是最好的方式,只要定义GRE_HOME为当前一个可用的gecko sdk的目录。这种方式下,还可以定义XPCOM_GLUE,强制在编译时依赖frozen的接口。
阅读(1324) | 评论(0) | 转发(0) |