zoukankan      html  css  js  c++  java
  • Windows下VS2013创建与使用动态链接库(.dll)

    一、创建动态链接库文件

    ** 
    1、打开VS2013,选择文件,新建工程 
    这里写图片描述

    2、选择新建W32控制台应用程序,这里将工程名改为makeDLL 
    这里写图片描述

    3、在应用程序类型中选择DLL,点击完成 
    这里写图片描述

    4、完成以上步骤后,项目中会生成下列文件 
    这里写图片描述

    5、下面创建自己编写的函数,以简单的求和函数add为例,首先在添加头文件createdll.h,createdll.h中的代码如下:

    #ifndef CREARDLL_H_
    #define CREARDLL_H_
    
    _declspec(dllexport) int add(int x, int y);/*_declspec(dllexport)声明一个导出函数,是说这个函数要从本DLL导出,我要给别人用。*/
    int add(int x, int y);  //求和函数
    
    #endif

    6、添加createdll.cpp文件,里面是对add函数的具体定义,如下所示

    #include"stdafx.h"  //注意不要忘了添加这个头文件
    #include"creatdll.h"
    #include<iostream>
    
    int add(int x, int y)
    {
        return x + y;
    }

    #include"stdafx.h" //注意不要忘了添加这个头文件#include"creatdll.h"#include<iostream>int add(int x, int y) { return x + y; }

    7、最终项目中所有文件如下: 
    这里写图片描述

    8、选择生成解决方案,即可在项目中生成exe文件的Debug文件夹中得到makeDLL.dll和makeDLL.lib两个文件。 
    这里写图片描述

    对于生成的lib文件有如下解释: 
    如果有 dll 文件, 那么 lib 一般是一些索引信息, 记录了 dll 中函数的入口和位置, 
    dll 中是函数的具体内容;如果只有 lib 文件,那么这个 lib 文件是静态编译出来 
    的,索引和实现都在其中。使用静态编译的 lib 文件,在运行程序时不需要再挂 
    动态库,缺点是导致应用程序比较大,而且失去了动态库的灵活性。

    **

    二、使用动态链接库文件

    ** 
    1、新建一个空项目,命名为testDLL,将上面生成的makeDLL.lib文件放到项目的存放代码的路径下,makeDLL.dll放到项目中生成exe文件的Debug文件夹中。

    2、在项目中添加程序testdll.cpp,代码如下:

    #include<iostream>
    #pragma comment(lib,"makeDLL.lib")
    
    _declspec(dllimport) int add(int x, int y); //_declspec(dllimport)声明一个导入函数,是说这个函数是从别的DLL导入,我要用。
    
    int main()
    {
        std::cout << "2 + 3 = " << add(2, 3) << std::endl;
    
        std::cin.get();
        return 0;
    }

    #include<iostream>#pragma comment(lib,"makeDLL.lib") _declspec(dllimport) int add(int x, int y); //_declspec(dllimport)声明一个导入函数,是说这个函数是从别的DLL导入,我要用。int main() { std::cout << "2 + 3 = " << add(2, 3) << std::endl; std::cin.get(); return0; }

    3、完成以上步骤即可看到输出结果如下,说明testDLL项目成功调用了makeDLL.dll里的求和函数add。 
    这里写图片描述

    #include<iostream>#pragma comment(lib,"makeDLL.lib") _declspec(dllimport) int add(int x, int y); //_declspec(dllimport)声明一个导入函数,是说这个函数是从别的DLL导入,我要用。int main() { std::cout << "2 + 3 = " << add(2, 3) << std::endl; std::cin.get(); return0; }

  • 相关阅读:
    Python基础语法 第2节课(数据类型转换、运算符、字符串)
    python基础语法 第5节课 ( if 、 for )
    python基础语法 第4节课 (字典 元组 集合)
    Python基础语法 第3节课 (列表)
    A. Peter and Snow Blower 解析(思維、幾何)
    C. Dima and Salad 解析(思維、DP)
    D. Serval and Rooted Tree (樹狀DP)
    C2. Balanced Removals (Harder) (幾何、思維)
    B. Two Fairs 解析(思維、DFS、組合)
    D. Bash and a Tough Math Puzzle 解析(線段樹、數論)
  • 原文地址:https://www.cnblogs.com/ransn/p/8059151.html
Copyright © 2011-2022 走看看