Я использую Xcode 8.2 на Mac, и я пытаюсь включить заголовок из другого проекта. Я сделал быстрый пример для использования для этого вопроса, поскольку тот, над которым я работаю, слишком велик, чтобы опубликовать его.C++ Включение заголовка из другого проекта в xcode 8
Вот проект, который я хочу, чтобы включить:
#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 */
и .cpp для него является:
#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;
}
Вот простой файл я сделал просто, чтобы показать ошибку я получаю ,
#include <iostream>
#include <string>
#include "personType.hpp"
using namespace std;
int main() {
personType person1;
person1.setName("bob", "smith");
person1.print();
}
И ошибка я получаю:
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)
Предупреждение исходит от меня выбора файла заголовка выше (personType.hpp) в Linked библиотеки и фреймворки разделе на вкладке Общие (делает поэтому мне удалось включить файл в основной файл без жалобы Xcode).
Как отказ от ответственности: я довольно широко искал эту проблему. Это кажется очень простым, так как я уверен, что многие пользователи должны получать доступ к заголовкам из других частей своего компьютера, но я не смог найти надежный ответ для Xcode (в течение прошлого года ...). Дайте мне знать, если мне нужно предоставить дополнительную информацию.
Спасибо!
EDIT:
Я успешно добавлен файл personType.cpp в список компиляции, но теперь используют ту же процедуру, он говорит, что не может найти файл в большом проекте я работал. Вот скриншот примерного проекта, в котором он работал, а затем тот, где он этого не сделал. Я не вижу никаких причин, почему она не будет включать его в этом ...
ошибка я получаю просто:
/Users/idontwanttogivemyname/Desktop/C++ Projects/malikBook/malikBookGradeReportEx/malikBookGradeReportEx/studentType.hpp:15:10: 'personType.hpp' file not found
Кажется, что '# include' работает нормально. Вы каким-то образом не компилируете или не связываете 'personType.cpp'. – BoBTFish