Les symboles non définis pour l'architecture i386:
J'ai récemment déménagé sur un mac, et je suis mal à l'aide de la ligne de commande compilateurs. J'utilise g++ pour compiler, et cela génère un fichier source unique d'amende. si j'essaie d'ajouter un fichier d'en-tête, lorsque j'essaie de le compiler avec g++ - je obtenir les symboles non définis pour l'architecture i386. Les programmes de compiler fine dans xCode. Ai-je raté quelque chose d'évident?
essayé d'utiliser g++ -m32 main.cpp... ne sais pas quoi d'autre pour essayer.
D'accord, L'ancien code compilé... Avons rétréci vers le bas à ma constructeurs.
class Matrix{
public:
int a;
int deter;
Matrix();
int det();
};
#include "matrix.h"
Matrix::Matrix(){
a = 0;
deter = 0;
}
int Matrix::det(){
return 0;
}
mon erreur est
Les symboles non définis pour l'architecture x86_64:
"De la matrice::Matrix()", référencé à partir de:
_main dans ccBWK2wB.o
ld: symbole(s) ne se trouvent pas pour l'architecture x86_64
collect2: ld a retourné 1 code de sortie
mon code principal a
#include "matrix.h"
int main(){
Matrix m;
return 0;
}
ainsi que l'habituel
et bien sûr, la sortie correspondante 😉
Juste pour être clair, l'architecture de qui êtes-vous essayer de construire? Est-il x86_64?
OriginalL'auteur maccard | 2011-04-28
Vous devez vous connecter pour publier un commentaire.
Il semble que vous avez trois fichiers:
Matrix
classe;Matrix
méthodes;main()
et utilise leMatrix
classe.Afin de produire un exécutable avec tous les symboles, il faut le compiler à la fois .fichiers cpp et de les lier ensemble.
Un moyen facile de le faire est de spécifier à la fois dans votre
g++
ouclang++
invocation. Par exemple:ou, si vous préférez utiliser
g++
— qu'Apple n'ai pas mis à jour en temps, et il semble qu'il ne sera pas dans un avenir prévisible:J'ai été à la recherche partout pour cette solution. Merci.
OriginalL'auteur
n'est pas le cas ici, mais il peut arriver à être le vous oubliez de mettre le nom de la classe ::
par exemple:
un bon format:
foo.h
foo.cpp
un mauvais format
foo.h
foo.cpp
Parfait expliquer. Merci.
OriginalL'auteur ademar111190
Avez-vous réellement définir la Zone de constructeur de quelque part? (comme Line.cpp)
;
après le constructeur déclaration.Constructeur n'est défini. Le code se compile dans XCode. et non, avoir un ; à la fin de la ligne, c'est juste un type désolé.
et vous êtes, y compris Matrix.cpp dans la ligne de commande trop, non?
Non, je n'ai pas compris matrix.cpp dans la ligne de commande. Merci!
OriginalL'auteur Ken Aspeslagh