VC编程之vc++6.0创建及调用dll库方法
小标 2019-05-07 来源 : 阅读 648 评论 0

摘要:本文主要向大家介绍VC编程之vc++6.0创建及调用dll库方法了,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

本文主要向大家介绍VC编程之vc++6.0创建及调用dll库方法了,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

VC编程之vc++6.0创建及调用dll库方法

这几天涉及到vc下dll库的调用和创建问题,由于以前没有接触过这方面的知识,所以参考了一些资料。为了方便自己以后参考,将创建及调用的方法做如下记录,如有幸被您发现不足之处希望给予指正:


一、vc++6.0下创建dll动态库(由于本人需求,在这里只介绍MFC规则的DLL库创建方式)


    注:DLL的编制与具体的编程语言及编译器无关,动态链接库随处可见,VC++支持三种DLL:非MFC动态库、MFC规则DLL和MFC扩展DLL。DLL导出函数(或变量、类)可供应用程序调用;DLL内部函数只能在DLL程序内使用,应用程序无法调用它们。

1、打开vc++6.0 —>文件—>新建工程(MFC AppWizard(dll))—>动态链接库使用共享MFC DLL//表示创建一个MFC规则的dll库(详细操作见下图——创建一个名字为Mydll的动态库)


 2、在创建后的工程中会有一些生成的文件,打开Mydll.def文件(如果无法打开文件,请关闭工程保存后关闭,并重新打开工程),在文件中加入函数名Func_add


 

3、打开Mydll.h文件中添加:外部函数声明//求和函数,函数名为Add_new

extern “C” __declspec(dllexport) int __stdcall Add_new(int a,int b);


 

4. 在Myddl.cpp文件中添加: 外部函数实现

extern “C” __declspec(dllexport) int __stdcall Func_add(int a,int b)

{

     return a+b;

}




5、组建——全部重建,会在debug目录下生成一个Mydll.dll文件,到此为止我们的dll库就创建成功了。

 


二、如何调用动态库

注:调用动态库分为两种方式:一种是静态调用方式,另一种为动态调用方式!本人理解其两者并没有太大的区别。静态调用方式就是只要程序运行就加载动态库到内存中,即使程序运行期间没有用到dll库里的函数也同样加载!动态调用方式是指每次用到dll库中的函数时加载该库,调用结束之后释放内存!理论上将静态调用方式占内存运行快,动态调用方式节省内存,但运行速度稍慢!

1、静态调用方式举例

2、动态调用方式(将生成dll库(Mydll.dll)复制到)

只需要在代码中加入以下几行

HMODULE hLib;//定义HMODULE类型句柄,加载dll后返回的句柄,可通过该句柄获取函数入口地址

typedef int (__stdcall *fun)(int, int);//定义函数指针类型

fun myadd;//定义一个fun类型的函数指针

hLib = LoadLibrary("Mydll.dll");//在需要调用dll中函数代码前加入,表示加载dll库到内存

myadd = (fun) GetProcAddress(hLib, "Func_add");//获取Func_addr函数的指针

myadd(1,3);//调用该函数

FreeLibrary(hLib);//释放dll库


以上就介绍了VC/MFC的学习,希望对VC/MFC有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言VC/MFC频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:13167058313
小职老师的微信号:13167058313

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    ICP许可  沪B2-20190160

站长统计