Estoy intentando compilar el código de muestra "SonofGrab" utilizando XCode 4.5.1 en OS X 10.8.Error de enlace para funciones en línea
Una función se define como esto en Controller.m
inline uint32_t ChangeBits(uint32_t currentBits, uint32_t flagsToChange, BOOL setFlags);
Esto conduce a este mensaje de error:
Undefined symbols for architecture x86_64:
"_ChangeBits", referenced from:
-[Controller awakeFromNib] in Controller.o
[...]
ld: symbol(s) not found for architecture x86_64
Extracción de la expansión en línea de los ChangeBits función soluciona el problema, pero ¿por qué el linker no encuentra Changebits con la definición original?
No recuerdo haber tenido este problema en OS X 10.7 con la misma muestra de código. ¿Hubo algunos cambios en el clang que rompieron este código? – alecail
Probablemente porque antes usaba GCC o LLVM-GCC. LLVM-GCC pretende ser compatible con GCC, es decir, producir los mismos resultados. Ahora que está utilizando Clang por completo, está viendo el error exactamente como se describe en los documentos de LLVM a los que me he vinculado. – mattjgalloway
Me encontré con este problema y la respuesta de mattjgalloway lo resolvió. Para ser más claros, en Controller.m, línea 71, agregue "static" delante de "inline". –