制作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

 

 

你可能感兴趣的:(Microsoft,dll,firefox,library,plugins,translation)