zoukankan      html  css  js  c++  java
  • DLL基本开发规则

    1、显示调用DLL方式:

    typedef float (*MyCalculate)(float,float,int); //宏定义floatcalculate函数指针类型
    HINSTANCE hdll; //DLL的句柄
    MyCalculate calfunc;//函数指针
    hdll=LoadLibrary("..\\debug\\FloatCalDLL.dll"); //LoadLibrary函数装载DLL
    if(hdll!=NULL)
    {
    //GetProcAddress函数获得calculate函数地址
    calfunc=(MyCalculate)GetProcAddress(hdll,"floatcalculate");//floatcalculate函数名
    }
    else
    {
    AfxMessageBox("无法加载DLL");
    return;
    }
    UpdateData(true);
    m_floResult=calfunc(m_floNum1,m_floNum2,m_radio);

    2、隐式调用DLL方式:

    A1#include "calculate.h"

    #pragma comment(lib,"FloatCalDLL.lib") //通知编译器DLL的.lib文件所在的路径及文件名

    A2extern"C" _declspec(dllimport) float floatcalculate(float x,float y,int type);//声明导入函数

    A1,A2至少要有一个

    floatcalculate(10,10,10);

    3、导出全局变量:

    ExternVal.cpp

    char* myVar;

    ExternValDll.def

    ;在DLL中导出变量
    LIBRARY "ExternVarDll"
    DESCRIPTION "实现一个导出变量的DLL"
    EXPORTS
    myVar DATA

    4、导入全局变量:

    HINSTANCE hdll; //DLL的句柄
    hdll=LoadLibrary("..\\debug\\ExternVarDll.dll"); //LoadLibrary函数装载DLL
    if(hdll!=NULL)
    {
    //GetProcAddress函数获得dllVar变量的地址
    m_strVar=*(char**)GetProcAddress(hdll,"myVar"); //获取全局变量
    UpdateData(FALSE);
    FreeLibrary(hdll); //释放DLL
    }
    else
    {
    AfxMessageBox("无法加载DLL!");
    return;
    }

    5、导出类:

    AreaVolumnClass.h

    class _declspec(dllexport) AreaVolumnClass //声明导出类
    {
    public:
    AreaVolumnClass();
    virtual ~AreaVolumnClass();
    double GetArea(); //计算长方体的表面积
    double GetVolumn(); //计算长方体的体积
    void SetLenth(double a); //设置长方体的长
    void SetWidth(double b); //设置长方体的宽
    void SetHeight(double c); //设置长方体的高
    private:
    double lenth; //存储长方体的长
    double width; //存储长方体的宽
    double height; //存储长方体的高

    };

    6、导入类:

    #include "AreaVolumnClass.h" //包含头文件,类在其中声明了
    #pragma comment(lib,"ExportClassDll.lib") //隐式导入DLL

    AreaVolumnClass myclass;

  • 相关阅读:
    Jenkins中构建Testcomplete项目的方法介绍
    抖音批量,批量运营抖音_不要迷恋我_【单月抖音变现7000万】教程
    java 读取 excel 表格内容
    .NET Core 2.1中的分层编译(预览)
    Windows10上使用Linux子系统(WSL)
    swagger上传文件并支持jwt认证
    .NET微服务 容器化.NET应用架构指南(支持.NET Core2)
    用C#编写Linux守护进程
    安装mysql后运行.net程序出错
    2018 你好
  • 原文地址:https://www.cnblogs.com/quansir/p/2753205.html
Copyright © 2011-2022 走看看