error c++ undefined-reference cross-compiling

c++ - error - Referencia no definida a un miembro estático



reference to undefined c++ (3)

Linker no sabe dónde asignar datos para _frequency y tiene que decirlo manualmente. Puede lograr esto simplemente agregando esta línea: LARGE_INTEGER WindowsTimer::_frequency = 0; en una de tus fuentes de C ++.

Explicación más detallada here

Estoy usando un compilador cruzado. Mi código es:

class WindowsTimer{ public: WindowsTimer(){ _frequency.QuadPart = 0ull; } private: static LARGE_INTEGER _frequency; };

Obtuve el siguiente error:

referencia indefinida a `WindowsTimer :: _ frecuencia ''

También traté de cambiarlo a

LARGE_INTEGER _frequency.QuadPart = 0ull;

o

static LARGE_INTEGER _frequency.QuadPart = 0ull;

pero sigo recibiendo errores

alguien sabe por qué?


Necesita definir _frequency en el archivo .cpp.

es decir

LARGE_INTEGER WindowsTimer::_frequency;


Si hay una variable estática declarada dentro de la clase, entonces debe definirla en el archivo cpp como este

LARGE_INTEGER WindowsTimer::_frequency = 0;