// Shape.h -- this would be A.dll
#pragma once
// Notice the conditional
#ifdef SHAPE_EXPORTS
#define SHAPE_API __declspec(dllexport)
#else
#define SHAPE_API __declspec(dllimport)
#endif
class SHAPE_API Shape /*: public IShape*/
{
public:
Shape();
Shape(int sides, int sideLength, int apothem);
~Shape();
int Perimeter();
double Area();
private:
int sides;
int sideLength;
int apothem;
};
// Shape.cpp
// Do it before including the header to get dllexport
#define SHAPE_EXPORTS
#include "stdafx.h"
#include "Shape.h"
Shape::Shape() : sides(0), sideLength(0), apothem(0)
{
}
Shape::Shape(int sides, int sideLength, int apothem) : sides(sides), sideLength(sideLength), apothem(apothem)
{
}
Shape::~Shape()
{
}
double Shape::Area()
{
if (sides == 1 || sides == 2)
{
return -1;
}
return .5 * Perimeter() * apothem;
}
int Shape::Perimeter()
{
return sideLength * sides;
}
// ShapesTester.h - this would be B.dll
#include "../TestHarness/ITest.h"
class ShapesTester : ITest
{
public:
ShapesTester();
~ShapesTester();
bool Test() override;
ShapesTester & ShapesTesterFactory();
private:
};
// ShapesTester.cpp
#include "stdafx.h"
#include "ShapesTester.h"
#include "Shape.h"
ShapesTester::ShapesTester()
{
}
ShapesTester::~ShapesTester()
{
}
bool ShapesTester::Test()
{
Shape myShape = Shape(3, 9, 5); // error here; Cannot resolve symbol 'Shape'
return myShape.Area() == 67.5;
}
ShapesTester & ShapesTesterFactory()
{
ShapesTester * tester = new ShapesTester();
return *tester;
}
Comments