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?