Błąd linkowania LNK2005 - redefinicja funkcji

0

Mam następujące klasy:

// Model.h
#pragma once
#define LIBRARY_IMPLEMENTATION // This is required to use the library
#include "library.h"
class Model
{
public:
	virtual void useLibrary() = 0;
};

// ModelTypeA.h
#pragma once
#include "Model.h"
class ModelTypeA :
	public Model
{
public:
	ModelTypeA();
	~ModelTypeA();
	void useLibrary();
};

// Drawer.h
#pragma once
#include "Model.h"
class Drawer
{
public:
	Drawer();
	~Drawer();

	void draw(Model * model);
};

// ModelTypeA.cpp
#include "ModelTypeA.h"
ModelTypeA::ModelTypeA() {}
ModelTypeA::~ModelTypeA(){}
void ModelTypeA::useLibrary(){ //use library functions }

// Drawer.cpp
#include "Drawer.h"
Drawer::Drawer() {}
Drawer::~Drawer() {}
void Drawer::draw(Model * model){ // Draw the model }

Errors:
ModelTypeA.obj : error LNK2005: Library function already defined in Drawer.obj

Muszę korzystać z zewnętrznej biblioteki, aby wykonać pewne operacje. Biblioteka składa się z pliku .lib i interfejsu w formie pliku nagłówkowego. W obecnej postaci linker wyrzuca błędy o redefinicji funkcji bilioteki. Jak mogę korzystać z klasy ModelTypeA w różnych miejscach projektu bez redefiniowania funkcji biblioteki?

0

Podziałało stworzenie nowego pliku .cpp, w którym umieściłem

 #define LIBRARY_IMPLEMENTATION
#include "library.h"

W pozostałych miejsach, gdzie muszę skorzystać z biblioteki używam po prostu:

#include "library.h"

1 użytkowników online, w tym zalogowanych: 0, gości: 1