Ich benutze Xcode 8.2 auf einem Mac, und ich versuche, eine Überschrift aus einem anderen Projekt aufzunehmen. Ich habe ein kurzes Beispiel für diese Frage verwendet, da die, an der ich gerade arbeite, zu groß ist, um sie zu posten.C++ Include Header aus einem anderen Projekt in xcode 8
Hier ist das Projekt, das ich schließen möchte:
#ifndef personType_hpp
#define personType_hpp
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
class personType {
public:
personType();
personType(string, string);
~personType();
void setName(string, string);
string getFName();
string getLname();
void print() const;
private:
string firstName;
string lastName;
};
#endif /* personType_hpp */
und die CPP für sie ist:
#include "personType.hpp"
personType::personType() {
firstName = "";
lastName = "";
}
personType::personType(string fn, string ln): firstName(fn), lastName(ln) {
}
personType::~personType() {
}
void personType::setName(string fn, string ln) {
firstName = fn;
lastName = ln;
}
string personType::getFName() {
return firstName;
}
string personType::getLname() {
return lastName;
}
void personType::print() const {
cout << firstName << " " << lastName;
}
Hier ist eine einfache Datei, die ich gerade gemacht, den Fehler zeigen Ich erhalte .
#include <iostream>
#include <string>
#include "personType.hpp"
using namespace std;
int main() {
personType person1;
person1.setName("bob", "smith");
person1.print();
}
Und der Fehler I bin immer:
warning: skipping file '/Users/idontwanttogivemyname/Desktop/C++ Projects/malikBook/malikBookEx11_3/malikBookEx11_3/personType.hpp' (unexpected file type 'sourcecode.cpp.h' in Frameworks & Libraries build phase)
Undefined symbols for architecture x86_64:
"personType::setName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:
_main in main.o
"personType::personType()", referenced from:
_main in main.o
"personType::~personType()", referenced from:
_main in main.o
"personType::print() const", 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)
Die Warnung kommt von mir oben (personType.hpp) die Header-Datei auszuwählen, die in dem verknüpften Frameworks und Bibliotheken Abschnitt unter dem Registerkarte Allgemein (tun so erlaubt mir, die Datei im Wesentlichen ohne Xcode beschweren).
Als Disclaimer: Ich habe dieses Problem ziemlich ausführlich gegooglet. Es scheint sehr einfach zu sein, da ich sicher bin, dass viele Benutzer auf Header von anderen Teilen ihres Computers zugreifen müssen, aber ich konnte keine solide Antwort für Xcode finden (innerhalb des letzten Jahres ...). Lassen Sie mich wissen, wenn ich weitere Informationen zur Verfügung stellen muss.
Danke!
EDIT:
Ich habe erfolgreich die personType.cpp Datei an die Kompilierung-Liste hinzugefügt, aber jetzt nach dem gleichen Verfahren, sagt es die Datei nicht in dem großen Projekt finden kann ich gerade arbeite. Hier ist ein Screenshot des Beispielprojekts, in dem es funktioniert hat, gefolgt von dem Beispiel, in dem es nicht funktioniert hat. Ich sehe keinen Grund, warum es nicht in diesem enthalten würde ...
der Fehler ich erhalte ist einfach:
/Users/idontwanttogivemyname/Desktop/C++ Projects/malikBook/malikBookGradeReportEx/malikBookGradeReportEx/studentType.hpp:15:10: 'personType.hpp' file not found
Es scheint, dass die '# include' funktioniert gut. Sie kompilieren oder verbinden irgendwie 'personType.cpp' nicht. – BoBTFish