製作Firefox Plugin的幾個注意點

製作 Firefox Plugin的幾個注意點

1 DLL文件必須以 np開頭(無大小寫要求),最好遵循 8.3格式(現在的 firefox沒有這個限制),比如說 npnul32.dll

2 在創建項目的時候,最好創建空的 DLL項目,否則要手動刪除它們,並修改 VC的一些設置,比較麻煩,不推薦。項目的名字最好是用 np打頭,這樣就免去修改生成 np打頭的 DLL文件的所有設置。

3 編譯源代碼的時候,必須添加

  MOZILLA_STRICT_API

  XP_WIN

  XP_WIN32

三個宏。

4)如果使用 *.def文件定義接口函數,那麼在 LIBRARY項,庫名必須和最終的 DLL文件名一致,比如說 NPNUL32。一般的格式如下:

LIBRARY   NPNUL32

 

EXPORTS

            NP_GetEntryPoints   @1

            NP_Initialize       @2

            NP_Shutdown         @3

 

5 資源文件的創建。

A)必須添加 MIMEType項,比如說: VALUE "MIMEType", "application/x-java-applet"

B)最好添加 FileExtents項,比如說 VALUE "FileExtents", "pdf"

C)最好語言使用英文,如果中文的話,產生的 DLL很大。

D FILEFLAGSMASK項可以考慮都 enabled,以免不必要的麻煩,比如說 FILEFLAGSMASK 0x3fL

E)在資源文件中,不要使用 afxres.h,用 winresrc.h代替;否則有可能生成的 DLL Firefox不認識。

下面是我做測試時候使用的一個 rc文件(我手工改了標準 VC2005產生的 version文件,裏面有些註釋我沒有改動,所以可能不正確,比如說“ Chinese (P.R.C.) resources”),請做參考。

// Microsoft Visual C++ generated resource script.

//

#include "resource.h"

 

#define APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the TEXTINCLUDE 2 resource.

//

#include "winresrc.h"

 

/////////////////////////////////////////////////////////////////////////////

#undef APSTUDIO_READONLY_SYMBOLS

 

/////////////////////////////////////////////////////////////////////////////

// Chinese (P.R.C.) resources

 

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)

#ifdef _WIN32

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

#pragma code_page(1252)

#endif //_WIN32

 

#ifdef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// TEXTINCLUDE

//

 

1 TEXTINCLUDE

BEGIN

    "resource.h/0"

END

 

2 TEXTINCLUDE

BEGIN

    "#include ""winresrc.h""/r/n"

    "/0"

END

 

3 TEXTINCLUDE

BEGIN

    "/r/n"

    "/0"

END

 

#endif    // APSTUDIO_INVOKED

 

 

/////////////////////////////////////////////////////////////////////////////

//

// Version

//

 

VS_VERSION_INFO VERSIONINFO

  FILEVERSION 1,0,0,1

  PRODUCTVERSION 1,0,0,1

  FILEFLAGSMASK 0x3fL

#ifdef _DEBUG

  FILEFLAGS 0x1L

#else

  FILEFLAGS 0x0L

#endif

  FILEOS 0x40004L

  FILETYPE 0x2L

  FILESUBTYPE 0x0L

BEGIN

    BLOCK "StringFileInfo"

    BEGIN

        BLOCK "040904e4"

        BEGIN

            VALUE "FileDescription", "npwyq Dynamic Link Library"

            VALUE "FileExtents", "html|htm"

            VALUE "FileOpenName", "npwyq"

            VALUE "FileVersion", "1, 0, 0, 1"

            VALUE "InternalName", "npwyq"

            VALUE "LegalCopyright", "Copyright (C) 2009"

            VALUE "MIMEType", "application/x-wyq-plugin"

            VALUE "OriginalFilename", "npwyq.dll"

            VALUE "ProductName", " npwyq"

            VALUE "ProductVersion", "1, 0, 0, 1"

        END

    END

    BLOCK "VarFileInfo"

    BEGIN

        VALUE "Translation", 0x409, 1252

    END

END

 

#endif    // Chinese (P.R.C.) resources

/////////////////////////////////////////////////////////////////////////////

 

 

 

#ifndef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the TEXTINCLUDE 3 resource.

//

 

 

/////////////////////////////////////////////////////////////////////////////

#endif    // not APSTUDIO_INVOKED

 

6)在產生 DLL文件後,將它拷貝到 firefox plugins目錄中去,如果有相關的 *.xpt文件,請拷貝到 components中去。若此 DLL依賴於其他第三方的 DLL文件,則要將他們拷貝到與 firefox.exe的同一級目錄中去。關閉所有的firefox瀏覽器,然後再次打開。在地址欄中輸入about:plugins,檢查是否你的plugin已經註冊成功。

 

若對其中的其他細節感興趣,不妨參考: https://developer.mozilla.org/en/Compiling_The_npruntime_Sample_Plugin_in_Visual_Studio

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章