VS2010動態鏈接庫的生成及調用(C++)


一、動態鏈接庫的生成

  1. 首先利用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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM