博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DLL基本开发规则
阅读量:7117 次
发布时间:2019-06-28

本文共 1699 字,大约阅读时间需要 5 分钟。

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;

 

转载于:https://www.cnblogs.com/quansir/archive/2012/11/04/2753205.html

你可能感兴趣的文章
我的友情链接
查看>>
AngularJS中的表单验证机制
查看>>
ESXI上的新建虚机绑定已使用过的静态ip无法ping通网关的奇怪现象
查看>>
每日一题_JavaScript.利用Js操作frameset框架集对象实现购物车?
查看>>
MySQL索引
查看>>
redhat6.5 配置使用centos的yum源
查看>>
Centos下磁盘管理
查看>>
读书笔记-项目计划、进度与控制
查看>>
从有限状态机(FSM)到行为树(Behavior Tree)(1)
查看>>
jvm 解释器和编译器
查看>>
ajax异步session值不唯一 总是改变 解决办法
查看>>
在vsphere上迁移某台虚拟机的连锁步骤
查看>>
DLM - stackglue 层
查看>>
python 基础 学习 内置函数
查看>>
VMware (CentOS 6.x)克隆导致的网卡问题
查看>>
帧中继环境下ospf的使用(点到点模式)
查看>>
编程语言和shell编程的基础内容以及grep、egrep命令及相应的正则表达式和用法...
查看>>
819C - RAW文件系统、集成文件系统
查看>>
我的友情链接
查看>>
Locating Elements(一)
查看>>