2014-02-23 58 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; 
} 
相關問題