C ++ Включение заголовка из другого проекта в xcode 8

Я использую Xcode 8.2 на Mac, и я пытаюсь включить заголовок из другого проекта. Я сделал быстрый пример для использования в этом вопросе, так как тот, над которым я работаю, слишком велик для публикации.

Вот проект, который я хочу включить:

#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) в разделе «Связанные фреймворки и библиотеки» на вкладке «Общие» (это позволило мне включить файл в основной файл без жалоб XCode).

В качестве отказа от ответственности: я довольно широко прибегаю к этой проблеме. Это кажется очень простым, так как я уверен, что многим пользователям нужен доступ к заголовкам с других частей их компьютера, но я не смог найти надежного ответа для Xcode (в течение прошлого года …). Дайте мне знать, если мне нужно предоставить больше информации.

Спасибо!

РЕДАКТИРОВАТЬ:

Я успешно добавил файл personType.cpp в список компиляции, но теперь, используя ту же процедуру, он говорит, что не может найти файл в большом проекте, над которым я работал. Вот скриншот примера проекта, который он работал, а затем тот, где он не работал. Я не вижу причин, почему бы не включить его в этот …

Рабочий пример

Не работает…

ошибка, которую я получаю, просто:

/Users/idontwanttogivemyname/Desktop/C++ Projects/malikBook/malikBookGradeReportEx/malikBookGradeReportEx/studentType.hpp:15:10: 'personType.hpp' file not found

0

Решение

personTypeметоды нигде не найти. Да, они объявлены в заголовке, но фактический код для этого не может быть найден. Это все равно, что спросить кого-то «есть эта вещь под названием плюс», а затем «что такое 3 + 5?» фактически не говоря им, как сложить вещи вместе.

Чтобы добавить код, вам нужно скомпилировать personType.cpp, а затем скомпилировать main.cpp и связать их вместе.

Попробуйте проверить ваши шаги сборки или файлы проекта в XCode, чтобы убедиться, что оба main.cpp а также personType.cpp собраны вместе.

-1

Другие решения

Добавьте копии файлов, которые вы хотите #include, в проект, над которым вы сейчас работаете, чтобы все было откомпилировано все вместе и связаны все вместе в IDE.

В данный момент вы просто ссылаетесь на ресурсы, которые были объявлены в заголовке, но у вас есть реализации в файле .cpp в другом проекте. Базовый код должен быть скомпилирован и правильно связан.

0

По вопросам рекламы [email protected]