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;

  • 相关阅读:
    Screen print or copy
    <转>关于SQL Server数据库的若干注意事项
    sql server 链接到oracle库,读取对应信息
    LinkedServer链接服务器的使用
    序号生成一例
    新解:报表服务器数据库的版本格式无效,或无法读取。已找到的版本为“Unknown”,而所需的版本为“C.0.8.40”。
    GridView to Excel
    sql server临时表是否存在
    <转>SQL Server大表转为分区表实例
    <转> 人生十二个经典领悟
  • 原文地址:https://www.cnblogs.com/quansir/p/2753205.html
Copyright © 2011-2022 走看看