1.创建工程
2.在工程中添加类,创建.h和.cpp文件
//.h代码
/**
请注意此代码方法声明中的 __declspec(dllexport) 修饰符。
这些修饰符使 DLL 能够导出该方法以供其他应用程序使用。
*/
1 namespace MathFuncs 2 { 3 class MyMathFuncs 4 { 5 public: 6 // Returns a + b 7 static __declspec(dllexport) double Add(double a, double b); 8 9 // Returns a - b 10 static __declspec(dllexport) double Subtract(double a, double b); 11 12 // Returns a * b 13 static __declspec(dllexport) double Multiply(double a, double b); 14 15 // Returns a / b 16 // Throws DivideByZeroException if b is 0 17 static __declspec(dllexport) double Divide(double a, double b); 18 }; 19 }
//.cpp代码
1 // MathFuncsDll.cpp 2 // compile with: /EHsc /LD 3 4 #include "MathFuncsDll.h" 5 6 #include <stdexcept> 7 8 using namespace std; 9 10 namespace MathFuncs 11 { 12 double MyMathFuncs::Add(double a, double b) 13 { 14 return a + b; 15 } 16 17 double MyMathFuncs::Subtract(double a, double b) 18 { 19 return a - b; 20 } 21 22 double MyMathFuncs::Multiply(double a, double b) 23 { 24 return a * b; 25 } 26 27 double MyMathFuncs::Divide(double a, double b) 28 { 29 if (b == 0) 30 { 31 throw new invalid_argument("b cannot be zero!"); 32 } 33 34 return a / b; 35 } 36 }
3.生成解决方案
4.使用生成的DLL
创建一个一般的win32工程,生成一个main.cpp文件并输入如下代码:
1 #include "MathFunsDll.h" 2 #include<iostream> 3 using namespace std; 4 5 int main() 6 { 7 cout<<MathFuncs::myMathFun::Add(1.1,2.2)<<endl; 8 return 0; 9 }
5.设置该工程的属性
将之前生成的lib,dll和.h文件提出来放到一个文件夹(我放在桌面的temp文件其路径为C:\Users\LC\Desktop\temp)
设置属性:项目-->属性-->c/c++-->常规-->附加包含目录中输入:C:\Users\LC\Desktop\temp
项目-->属性-->连接器-->常规-->附加库目录:C:\Users\LC\Desktop\temp
项目-->属性-->连接器-->输入-->附加依赖项:Test.lib
属性设置完毕,可以运行程序了。