В моем проекте VS2010 DLL у меня есть ошибка при компиляции этого проекта: LNK 2001 unresolved external на pFuncs
моего класса:
class Foo
{
// ...
static NPPluginFuncs * pFuncs;
// ...
};
Здесь struct, определенная в 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;
Статические члены структуры (или класса) объявляются в typedef struct { };
и должен быть определен явно один раз:
#include "npfunctions.h"
Foo::pFuncs = NULL; // optional initialization
int main()
{
Foo::pFuncs = new NPPluginFuncs;
}