方法一:
不罗嗦了,直接上代码吧!
// MathFuncsDll.h
namespace MathFuncs
{
class __declspec(dllexport) MyMathFuncs
{
public:
double Add(double a, double b);
double Subtract(double a, double b);
double Multiply(double a, double b);
double Divide(double a, double b);
};
}
// MathFuncsDll.cpp
#include "MathFuncsDll.h"
#include <stdexcept>
using namespace std;
namespace MathFuncs
{
double MyMathFuncs::Add(double a, double b)
{
return a + b;
}
double MyMathFuncs::Subtract(double a, double b)
{
return a - b;
}
double MyMathFuncs::Multiply(double a, double b)
{
return a * b;
}
double MyMathFuncs::Divide(double a, double b)
{
if (b == 0)
{
throw new invalid_argument("b cannot be zero!");
}
return a / b;
}
}
#include <iostream>
#include "MathFuncsDll.h"
#include <windows.h>
#include <stdio.h>
using namespace std;
using namespace MathFuncs;
int main()
{
double a = 7.4;
int b = 99;
MyMathFuncs *p = new MyMathFuncs;
cout << "a + b = " <<
p->Add(a, b) << endl;
cout << "a - b= " <<
p->Subtract(a,b)<<endl;
Sleep(10000);
return 0;
}
方法(二)
// MathFuncsDll.h
namespace MathFuncs
{
class MyMathFuncs
{
public:
virtual double Add(double a, double b); //注意,这里必须是虚函数后者纯虚函数。
virtual double Subtract(double a, double b);
virtual double Multiply(double a, double b);
virtual double Divide(double a, double b);
};
__declspec(dllimport) MyMathFuncs* CreateMathFuncsInstance();
__declspec(dllimport) void ReleaseMathFuncsInstance(MyMathFuncs* &);
}
#include "MathFuncsDll.h"
#include <stdexcept>
using namespace std;
namespace MathFuncs
{
MyMathFuncs* CreateMathFuncsInstance()
{
MyMathFuncs *p = NULL;
p = new MyMathFuncs;
return p;
}
void ReleaseMathFuncsInstance(MyMathFuncs* &p)
{
if (p)
{
delete p;
}
}
double MyMathFuncs::Add(double a, double b)
{
return a + b;
}
double MyMathFuncs::Subtract(double a, double b)
{
return a - b;
}
double MyMathFuncs::Multiply(double a, double b)
{
return a * b;
}
double MyMathFuncs::Divide(double a, double b)
{
if (b == 0)
{
throw new invalid_argument("b cannot be zero!");
}
return a / b;
}
}
#include <iostream>
#include "MathFuncsDll.h"
#include <windows.h>
#include <stdio.h>
using namespace std;
using namespace MathFuncs;
int main()
{
double a = 7.4;
int b = 99;
MyMathFuncs *p = CreateMathFuncsInstance();
cout << "a + b = " <<
p->Add(a, b) << endl;
cout << "a - b= " <<
p->Subtract(a,b)<<endl;
ReleaseMathFuncsInstance(p);
Sleep(10000);
return 0;
}