2012-04-28 1 views
0

Je rencontre un problème lors de l'utilisation de la fonction min() et max() dans mon projet C. J'ai importé math.h, mais quand je compiler le fichier que je continue à obtenir l'erreur suivante (une erreur similaire est affichée même en utilisant gcc au lieu de LLVM):Symboles non définis pour l'architecture x86_64 "_min"

Undefined symbols for architecture x86_64: 
    "_min", referenced from: 
     _main in main.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Je pense que le problème est qu'il ya isn » t une bibliothèque 64 bits de math.h ... ou le compilateur ne peut pas le trouver. J'utilise Mac OS X 10.7. Comment puis-je résoudre ce problème?

Répondre

1

Même si je peux voir "min" défini dans libSystem.dylib, je ne pense pas qu'il existe un en-tête exporté pour cela. Et je ne peux pas savoir d'où vient "_min", en termes de fichiers d'inclusion.

Normalement, "min" est référencé avec une macro ou avec votre propre fonction. Check out this very related question somebody else asked a while back.

Si vous regardez dans math.h, il y a des fonctions de type "min", mais elles sont pour les flottants et les doubles. Si vous travaillez uniquement avec des entiers ou des types personnalisés, lancez votre propre fonction.

+0

alors qu'est-ce que je dois écrire? gcc main.c ne fonctionne pas ... Écrire gcc -lm main.c ni ... –

+0

comment construisez-vous votre application ou outil ou quoi que ce soit? est-ce un makefile ou simplement compile depuis la ligne de commande? –

+0

Ligne de commande ou via Xcode. Je n'ai pas de fichier makefile –

Questions connexes