XPCOM開發簡介

來源:互聯網
上載者:User

1.首先安裝GECKO SDK開發包,並解壓到本地目錄 例如:/home/user/sdk/gecko-sdk/
2.為主介面類建立GUID  uuidgen
2.編寫介面檔案***.idl
3.分別產生***.h和***.xpt檔案(xpidl -m header/typelib -w -o /輸出路徑/輸出檔案名 -I /Gecko/IDL所在路徑 將要編譯的***.idl檔案)
4.修改產生的組件的標頭檔***.h,在開始加入宏保護代碼(#ifndef _MY_MYCOMPONENT_H_...),產生一個組件用的GUID,添加下面的行到標頭檔中
 首先是Contract ID,然後是類名,GUID
 #define MY_COMPONENT_CONTRACTID "@mydomain.com/XPCOMSample/MyComponent;1"
 #define MY_COMPONENT_CLASSNAME  "A Simple XPCOM Sample"
 #define MY_COMPONENT_CID        GUID
5.建立你的組件的標頭檔****.h,把***.h檔案中以/*Header file */開始的那段代碼拷貝到此標頭檔中,替換其中的_MYCLASS_為你的類名
6.建立你的組件的實現檔案****.cpp,添加標頭檔引用
 #include "****.h"
  把***.h檔案中以/*Implementation file */開始的那段代碼拷貝到此標頭檔中,替換其中的_MYCLASS_為你的類名,添加實現代碼 
6.建立你的組件定義檔案****Module.cpp,添加標頭檔引用
 #include "nsIGenericFactory.h" //Mozilla GenericFactory definitions
 #include "****.h"
  添加NS_GENERIC_FACTORY_CONSTRUCTOR(MyComponent)來定義你的組件的構造器
  為你的組件添加類名,contract ID, GUID定義
 static nsModuleComponentInfo components[] =
 {
  {
   MY_COMPONENT_CLASSNAME,
   MY_COMPONENT_CID,
   MY_COMPONENT_CONTRACTID,
   MyComponentConstructor,
  }
 };
  添加NS_IMPL_NSGETMODULE("****Module",components)用於向Mozilla輸出以上定義資訊

7.建立makefile,產生****.so
  (Embed:/home/embed/microb-engine/microb-engine/build-tree/mozilla/build/autoconf/make-makefile extentions
   目錄名
   會在此目錄下產生Makefile檔案)

/*embed下不用8,9*/
8.在Mozilla上註冊此組件
  拷貝****.so和前面產生的***.xpt到Mozilla的components目錄下(~/firefox/components, ~/Mozilla/components)
  運行regxpcom命令,註冊組件(可能需要提供組件所在的路徑)
  從Mozilla路徑下刪除xpti.dat和compreg.dat(這兩個檔案會在Mozilla下次重啟時自動產生)
  也可以touch Mozilla/FireFox安裝目錄下一個名為.autoreg的檔案
9.測試組件
  重新啟動Mozilla或是FireFox
  開啟測試頁面****Test.html,點擊"GO"按鈕,就能看到預期的結果了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.