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中释放

  • 相关阅读:
    【hdu 6214】Smallest Minimum Cut
    Spring Boot核心配置
    Spring Cloud是什么?
    Spring Boot开启的2种方式
    JVM运行时区域详解。
    史上最全Java多线程面试题及答案
    Git文件操作命令
    Git的安装配置
    Git SSH连接方式配置
    Intellij Idea乱码解决方案都在这里了
  • 原文地址:https://www.cnblogs.com/hanhuo/p/9401564.html
Copyright © 2011-2022 走看看