• 动态链接库的生成(dll)和 动态链接库隐式and显式调用


    一、构建动态链接库(dll.dll dll.lib dll.h)

    说明: .dll 是在执行程序是调用  .lib 是在连接程序是调用  .h是在编译程序时调用

       1.头文件(声明导入函数):_declspec(dllimport) int add(int a,int b);//(头文件不参加.dll文件的生成)

       2.cpp文件(定义导出函数):_declspec(dllexport) int add(int a,int b){return a+b;}

       3.结果得到.dll .lib .h三个文件

    二、示例程序

    1、头文件dll

    #ifdef DLL_API
    
    #else
    
    #define DLL_API  
    
    // 将DLL_API定义为空;动态和静态都是可用的   在动态链接库中#define DLL_API _declspec(dllimport)可用,静态不行
    
    #endif
    
    DLL_API int add(int a,int b);
    
    
    DLL_API int subtract(int a,int b);
    class DLL_API Point
    
    {
    
     public:
    
            int product(int a,int b);//乘积
    
    };

    2、cpp文件

    #define DLL_API _declspec(dllexport)
    
    #include "pcl.h"
    
    int add(int a,int b){return a+b;}
    int subtract(int a,int b){return a-b;}
    int Point::product(int a,int b)
    
    {
    
         return a*b;
    
    }

    动态链接库隐式and显式调用

    一、隐式应用动态链接库(三个文件怎么用)

       1.新建一个控制台工程,在工程中添加.h头文件路径(菜单Tools->Options->Directors)//.h文件用法

       2.添加add.lib(工程名字上右键->Settings->Link)  或者在cpp中写下代码 #pragma comment (lib,"xxx.lib")   //.lib文件的用法

       3.注意将.dll和.lib文件放到工程文件夹下面//.dll 文件的用法

     实例代码

    #include <stdio.h>
    #include <iostream>
    #include "pcl.h"
    #pragma comment (lib,"pcl.lib")
    using namespace std;
    
    void main()
    
    {
    int a=0,b=2,c=3,d=3;
    c=add(a,b);
    }

    二、显式应用动态链接库(四句代码,红色部分替换即可)

    1、定义一个句柄对象  HINSTANCE hInst;

    2、加载函数  hinst=LoadLibrary("add.dll");

    3、定义函数指针类型  typedef int(*ADDPROC)(int a,int b);//注意,ADDPROC是一个类型,不是一个变量,过渡作用

    4、定义变量并赋值  ADDPROC Add=(ADDPROC)GetProAddress(hInst,"add");

    5、至此就可以运用函数Add(5,3);了。

    http://www.cnblogs.com/hlxs/p/3783920.html

    链接:http://pan.baidu.com/s/1o6KgHGe 密码:5zaj

  • 相关阅读:
    其他:Oracle并购sun之后的影响之我见
    60款很酷的 jQuery 幻灯片演示和下载
    分享35个高质量的 Apple 风格图标素材
    25个漂亮的旅游网站设计作品欣赏
    tomcat内存溢出总结
    一个非常强大完整的web表单验证程序
    java socket (回顾)
    jdbc 公共类(2)
    各大IT公司笔试真题汇总
    软件公司的岗位职责
  • 原文地址:https://www.cnblogs.com/lwngreat/p/4750913.html
Copyright © 2020-2023  润新知