Я пишу простой игровой движок, и у меня есть файл EntityComponent.h:символ не найден связывающая библиотеки
#ifndef Psycho2D_Core_EntityComponent_
#define Psycho2D_Core_EntityComponent_
#include <string>
namespace psycho2d{
class EntityComponent{
private:
std::string m_name;
public:
EntityComponent(const std::string &name);
virtual ~EntityComponent();
const std::string& getName() const;
virtual void initialize() = 0;
virtual void loadProperties() = 0;
virtual void update() = 0;
virtual void destroy() = 0;
};
}
#endif
и относительный файл EntityComponent.cpp:
#include "EntityComponent.h"
#include <string>
psycho2d::EntityComponent::EntityComponent(const std::string &name){
this->m_name = name;
}
psycho2d::EntityComponent::~EntityComponent(){}
inline const std::string& psycho2d::EntityComponent::getName() const{
return this->m_name;
}
Эти два файла являются частью структуры (я работаю на Mac). Они хорошо компилируются. Проблема заключается в том, когда я пишу исполняемый файл, который использует библиотеку. Я создал подкласс класса EntityComponent и компилируется. Но, если я назову функцию getName(), компоновщик скажет мне:
"psycho2d::EntityComponent::getName() const", referenced from:
_main in main.o
Symbol(s) not found
Collect2: ld returned 1 exit status
Что я могу сделать? Спасибо.
осуществляете ли вы все абстрактные виртуальные методы, заданные в интерфейсе? – 2010-12-08 19:05:42
Может помочь, если вы включите свои команды компиляции/ссылки. – 2010-12-08 19:06:14