一、動態鏈接庫的生成
-
首先利用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)
