一、动态链接库的生成
-
首先利用VS2010新建一个空的工程或者win32工程
2.在工程中添加头文件和源文件
3.工程属性配置
3.1 可以在解决方案目录下新建以下几个文件夹
bin (用于存放Release编译生成的dll或exe文件)
bin_debug(用于存放Debug编译生成的dll或exe文件)
lib(用于存放Release编译生成的lib文件)
lib_debug(用于存放Debug编译生成的lib文件)
include(用于存放dll库对应的.h文件)
3.2设置工程属性
选中Algorithm工程——右键选中Properties
说明:若是Release编译将Output Directory设置为:..\bin
Import Library设置为:..\lib\$(TargetName).lib
3.3 DllDemon程序的编写
1 //Algorithm.h 2 #ifndef ALGORITHM_H_ 3 #define ALGORITHM_H_ 4 class _declspec(dllexport) McsfAlgorithm 5 { 6 public: 7 McsfAlgorithm(); 8 ~McsfAlgorithm(); 9 int Add(int, int); 10 int Sub(int, int); 11 }; 12 #endif
1 //Algorithm.cpp 2 #include "Algorithm.h" 3 McsfAlgorithm::McsfAlgorithm() 4 { 5 6 } 7 8 McsfAlgorithm::~McsfAlgorithm() 9 { 10 11 } 12 13 int McsfAlgorithm::Add(int firstNum, int secondNum) 14 { 15 return firstNum + secondNum; 16 } 17 18 int McsfAlgorithm::Sub(int firseNum, int secondNum) 19 { 20 return firseNum - secondNum; 21 }
3.4编译DllDemon工程,可以看到对应目录下生成的dll文件和lib文件
二、动态链接库的调用
1、在此解决方案下新建一个空的工程DllTestOperation,然后添加.cpp文件
2、配置DllTestOperation的工程属性,如下
3 main.cpp对应的代码
//main.cpp #include "Algorithm.h" #include <memory> #include <iostream> int main(int argc, char *argv[]) { std::shared_ptr<McsfAlgorithm> myOpertion(new McsfAlgorithm()); int testNum1 = myOpertion->Add(12,23); int testNum2 = myOpertion->Sub(90,30); std::cout<<"testNum1 = "<<testNum1<<std::endl; std::cout<<"testNum2 = "<<testNum2<<std::endl; return 0; }
4. 编译此工程,运行结果如下:
总结:
1)包含dl对应的头文件
2)加入lib文件及其对应的目录
3)输出目录与dll的输出目录一致
4)与dll工程保持相同的编译平台(win32 或 X64)