zoukankan      html  css  js  c++  java
  • 循序渐进DLL编程(一)

       最近觉得DLL比较好玩,所以于是按下心来进行学习DLL技术,我们在windows平台中看到很多软件下面都有dll文件,类似在windows、system文件也是有很多这种文件,其实这是一种类似于exe为磁盘文件,

      DLL 全称是动态连接库文件,其中一种功能就是能减小应用程序的冗余性和复杂度,能提升整个应用程序的模块化,其实在运行的时候被系统加载到虚拟运行的空间,DLL中可以提供多种导出服务函数给外界提供函数,DLL可以有自己的数据段但是没有自己的堆栈段,使用调用它的堆栈模式,一个DLL模式中只有一个实例,高度实现功能的封装,基于DLL的编程的方式确实有很多,在本文中首先介绍的静态的连接方式

    首先的DLL文件的编写

    //hello.h
    //本代码基于VS 2008
    #pragma once
    #define DLL_EXPORT __declspec(dllexport)
    extern "C" DLL_EXPORT int Add(int a,int b); 
    // hello.cpp
    #include<iostream>
    using namespace std;
    #include"hello.h"
    
    int Add(int a,int b)
    {
    return a+b;
    }

    然后DLL测试文件的编写

    //testHello.h
    #pragma once
    #define DLL_EXPORT __declspec(dllexport)
    extern "C" DLL_EXPORT int Add(int a,int b); 
    //testHello.cpp
    #include "testhello.h"
    #pragma comment(lib,"..\\debug\\Dll.lib");
    #include<iostream>
    using namespace std;
    
    int main ()
    {
    
       int a=3;
       int b=5;
       cout<<"the result is "<<Add(a,b)<<endl;
    
       getchar();
        return 0;
    }

    通过上面的测试代码可以发现静态使用还是很方便的~~~

    在上面的编程的思路主要分为以下几个步骤

    1.是对库文件的编写

      1.1库文件.h的编写

        a)#pragma once  主要是用于防止重复编译

        其实这段代码可以用这种头文件的预编译来代替

        #ifndef XXX_H

        #define XXX_H

       #endif

       b) 宏定义

        #define DLL_EXPORT __declspec(dllexport)

       c)函数的声明

       extern "C" DLL_EXPORT  the funcction you define

    1.2库文件.cpp

       实现在库头文件中你需要实现的函数功能

    2.使用库文件程序的编写

      2.1使用库文件.h的编写

          主要是对于要使用的库中的函数的声明

      2.2使用库文件.cpp的编写

          直接使用在.h中声明的函数

  • 相关阅读:
    报表设计--主格设置-手工设置-示例
    报表设计--分组报表-分组小计
    报表设计--单元格公式-设置实例
    报表设计--自由报表-自由扩展
    报表设计--交叉报表-多层交叉-实例
    报表设计--交叉报表-多层交叉
    报表设计--分组报表-多层分组-数据汇总
    报表设计--分组报表-多层分组-横向扩展
    报表设计--分组报表-多层分组-纵向扩展
    报表设计--分组报表-普通分组-横向扩展
  • 原文地址:https://www.cnblogs.com/OneDream/p/2878707.html
Copyright © 2011-2022 走看看