L'equivalente su Microsoft Visual C++ di undefined reference: il compilatore MSVC ha generato il file .obj ma LINK.EXE non ha trovato il corpo della funzione in nessun file .c, .cpp o file di libreria statica .lib collegato.
LNK2019_UNRESOLVED
→
Si verifica quando una variabile globale o funzione viene definita in un file header .h incluso da più file .c senza la parola chiave 'extern' (per variabili) o 'inline'/'static' (per funzioni).
MULTIPLE_DEFINITION
→
Per generare una libreria condivisa (.so o .dll), tutti i file oggetto (.o) componenti devono essere stati compilati con il flag '-fPIC' (Position Independent Code); l'inclusione di un file oggetto compilato per un binario statico genera questo blocco.
RELOCATION_NON_PIC
→
L'errore si verifica su architetture a 64 bit quando le sezioni dati o codice superano i 2GB e il modello di memoria predefinito (small code model) tenta di usare offset a 32 bit relativi; si risolve compilando con '-mcmodel=medium' o '-mcmodel=large'.
RELOCATION_TRUNCATED
→
Il linker scarta la libreria trovata perché compilata per un'architettura differente rispetto ai file oggetto del progetto (es. libreria ELF a 32 bit durante la compilazione a 64 bit o viceversa).
INCOMPATIBLE_LIB_FORMAT
→
Quando si utilizzano operazioni atomiche C11 (<stdatomic.h>) su tipi a 64 o 128 bit su architetture a 32 bit o senza istruzioni hardware dedicate, il compilatore emette chiamate a funzioni di supporto che richiedono il flag '-latomic'.
UNDEF_REF_ATOMIC
→
Su sistemi Linux con glibc inferiori alla 2.17, le funzioni temporali ad alta precisione POSIX ('clock_gettime') risiedono nella libreria di real-time (librt), richiedendo il flag '-lrt' in fase di link.
UNDEF_REF_CLOCK_GETTIME
→
L'inclusione di <dlfcn.h> per il caricamento dinamico di librerie condivise (.so) richiede di passare il flag '-ldl' al comando di linking su Linux con glibc precedenti.
UNDEF_REF_DLOPEN
→