2014-02-23 31 views
0

在我的VS2010 DLL的项目,我有一个错误,编译该项目时:LNK 2001年悬而未决的上我的课的pFuncs员外:LNK 2001无法解析的外部上NPPluginFuncs结构PTR作为类的静态成员

class Foo 
{ 
    // ... 
    static NPPluginFuncs * pFuncs; 
    // ... 
}; 

这里一结构,在npfunctions.h定义:

typedef struct _NPPluginFuncs { 
    uint16_t size; 
    uint16_t version; 
    NPP_NewProcPtr newp; 
    NPP_DestroyProcPtr destroy; 
    NPP_SetWindowProcPtr setwindow; 
    NPP_NewStreamProcPtr newstream; 
    NPP_DestroyStreamProcPtr destroystream; 
    NPP_StreamAsFileProcPtr asfile; 
    NPP_WriteReadyProcPtr writeready; 
    NPP_WriteProcPtr write; 
    NPP_PrintProcPtr print; 
    NPP_HandleEventProcPtr event; 
    NPP_URLNotifyProcPtr urlnotify; 
    void* javaClass; 
    NPP_GetValueProcPtr getvalue; 
    NPP_SetValueProcPtr setvalue; 
    NPP_GotFocusPtr gotfocus; 
    NPP_LostFocusPtr lostfocus; 
    NPP_URLRedirectNotifyPtr urlredirectnotify; 
    NPP_ClearSiteDataPtr clearsitedata; 
    NPP_GetSitesWithDataPtr getsiteswithdata; 
    NPP_DidCompositePtr didComposite; 
} NPPluginFuncs; 

回答

2

结构(或类)的静态成员在typedef struct { };被声明,并且需要显式地定义一次:

#include "npfunctions.h" 

Foo::pFuncs = NULL; // optional initialization 


int main() 
{ 
    Foo::pFuncs = new NPPluginFuncs; 
} 
相关问题