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)

 

posted @ 2019-03-15 14:32  有礼貌的狼  阅读(3986)  评论(0编辑  收藏  举报