1

私はプラグインを書いています、そしてそれはウィンドウズのファイルの[INVALID]セクションに入ります。pluginreg.dat私のnpplugin.rcファイルに問題があると思います。

ファイルではnpplugin.defすべてが正しいです:

LIBRARY
EXPORTS
    NP_GetEntryPoints @1
    NP_Initialize @2
    NP_Shutdown @3

しかし、どちらNP_GetEntryPointsNP_Initialize呼び出されません。

プラグインをインストールするには、それを%APPDATA%/Mozilla/pluginsディレクトリに置きます。

npplugin.rcコードは次のとおりです。

// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

#if 0
/////////////////////////////////////////////////////////////////////////////
// Russian (Russia) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED

#endif    // Russian (Russia) resources
/////////////////////////////////////////////////////////////////////////////
#endif

/////////////////////////////////////////////////////////////////////////////
// English (United States) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 4,5
 PRODUCTVERSION 4,5
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x40004L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "CompanyName", "MyCompany Ltd."
            VALUE "FileExtents", "myext"
            VALUE "FileOpenName", "My File"
            VALUE "FileDescription", "NPPlugin for me"
            VALUE "FileVersion", "4.5"
            VALUE "InternalName", "npMyPlugin"
            VALUE "Language", "English (United States)"
            VALUE "LegalCopyright", "Copyright (C) MyCompany Ltd. 2012"
            VALUE "MIMEType", "application/x-myplugin"
            VALUE "OriginalFilename", "npMyPlugin.dll"
            VALUE "ProductName", "My NPPlugin"
            VALUE "ProductVersion", "4.5"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

#endif    // English (United States) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

私の質問は、どこにエラーがあるのか​​、何が欠けているのかということです。

4

2 に答える 2

2

これはconedogersの Chris です。私のブログがお役に立てて嬉しいです。

ゲオルクは正しいです。Firefox は Windows ロケールを探していません。Mozilla のコードは複数のプラットフォーム用に書かれているため、Mozilla は独自の国際化を行っているようです。

ここで何が起こっているかというと、BLOCK "040904e4" は、以下に含まれる文字列を処理する方法をバイナリに指示します。バージョン情報は、文字列を含むために C スタイルの構造体を使用しません。ブロック情報は、バイト オフセットと文字列の文字型を計算するために使用されるため、文字列を抽出できます。

Firefox は en-western 用に構築されているようです。それ以外の場合は、Firefox がバージョン情報を読み込んで MIME タイプと説明文字列を取得できないことがわかりました。

MSDN の記事

于 2012-12-20T16:04:10.047 に答える