zoukankan      html  css  js  c++  java
  • 五,动态库(dll)的封装与使用

    在项目开发中,我们经常会使用到动态库(dll),要么是使用别人的动态库,要么是将功能函数封装为动态库给别人用。那么如何封装和使用动态库呢?以下内容为你讲解。

    1.动态库的封装

    以vs2010为例,我们在创建项目的时候,首先选择win32控制台项目,然后在应用程序设置中选择DLL.如下图:

    选择win32控制台项目

    选择DLL

    然后新建一个头文件,这里取名为 mydll.h,添加如下代码:

    #ifndef __MYDLL_H
    #define __MYDLL_H
    #define DLL_API extern "C" _declspec (dllimport)
    
    DLL_API int add(int a,int b);  
    
    #endif 
    
    

    新建源文件,取名为mydll.c,添加如下代码

    #include <stdio.h>
    #define DLL_API extern "C" _declspec(dllexport)  //注意,这里是export
    int add(int a,int b) //api函数
    {
        return a+b;
    }
    

    编译工程,在debug或者release文件夹下会生成*.dll和*.lib文件。至此,动态库封装完成。

    2.动态库的使用

    将动态库中的*.dll文件,*.lib文件还有*.h文件拷贝至项目工程的主函数文件所在目录下,引用 动态库头文件 并在代码中写上如下 声明

    #pragma  comment (lib,"mydll.lib")
    

    该行代码将dll导入到 项目工程中,然后我们就可以调用dll里的函数了。

    测试代码如下:

    #include "stdio.h"
    #include "mydll.h" //引用动态库头文件
    #pragma  comment (lib,"Dll1.lib") //导入动态库
    
    int main(int argc, int* argv[])
    {
        int a = 10;
        int b = 20;
    	printf("a+b = %d
    ",add(a,b));
        system("pause");
        return 0;
    }
    

    这里需要注意一个问题

    在dll中申请的内存,也要在dll中释放

  • 相关阅读:
    P5356 [Ynoi2017]由乃打扑克
    P4921 [MtOI2018]情侣?给我烧了!/P4931 [MtOI2018]情侣?给我烧了!(加强版)
    P2605 [ZJOI2010]基站选址
    CF1062E Company
    kd-tree
    扩展中国剩余定理(EXCRT)
    CF264C Choosing Balls
    CF1139D Steps to One
    P4655 [CEOI2017]Building Bridges
    P3311 [SDOI2014] 数数
  • 原文地址:https://www.cnblogs.com/hanhuo/p/9401564.html
Copyright © 2011-2022 走看看