• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 如何用dll?

如何用dll?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了如何用360修复dll,如何打开dll文件,如何注册dll文件,如何注册dll,如何运行dll文件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 如何用dll?
描述:

那位大哥帮忙?


解决方案1:

DLL是一种磁盘文件(通常带有DLL扩展名),它由全局数据、服务函数和资源组成,在运行时被系统加载到进程的虚拟空间中,成为调用进程的一部分。DLL模块中包含各种导出函数,用于向外界提供服务
第一道:
1.创建:
(1).生成DLL项目
.h定义需要导出的变量,函数和类的原型以及导出标识符
.CPP文件定义要导出的变量,函数和类的定义以及DllMain函数(分析DllMain函数中的通知)
加入导出函数的原型和定义:
__declspec(dllexport) int MyFunction(int n);
(2).生成DLL
测试生成的DLL(包括变量,函数和类)
使用Dumpbin查看生成DLL的输出符号
利用extern “C”来防止输出的函数被改名
2. 两种使用动态连接库的技术:
显式链接技术和隐式链接技术
隐式链接是指在应用程序中不需指明DLL文件的实际存储路径。在建立一个DLL文件时,链接程序会自动生成一个与之对应的LIB导入文件,LIB文件作为DLL的替代文件被编译到应用程序项目中。
显式链接就不必再使用导入文件,而是直接调用LoadLibary函数,并指定DLL的路径作为参数。LoadLibary返回HINSTANCE参数,应用程序在调用GetProcAddress函数时使用这一参数。GetProcAddress函数将符号名或标识号转换为DLL内部的地址。假设有一个导出如下函数的DLL文件:
extern "C" __declspec(dllexport) double SquareRoot(double d);
下面是应用程序对该导出函数的显式链接的例子:
typedef double(SQRTPROC)(double);
HINSTANCE hInstance;
SQRTPROC* pFunction;
VERIFY(hInstance=::LoadLibrary("c:\\winnt\\system32\\mydll.dll"));
VERIFY(pFunction=(SQRTPROC*)::GetProcAddress(hInstance,"SquareRoot"));
double d=(*pFunction)(81.0);
采用显式链接方式,程序员可以决定DLL文件何时加载或不加载。
第二道:直接输出类的封装性不好,private只支持语法上的封装性,不支持二进制的封装性利用抽象基类作为接口类可以加强封装性,但是需要提供创建类和删除类的函数
利用引用计数技术有效管理对象的生命期。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何用dll?

相关文章

  • 2017-06-05 如何判断有没有某种标识的定时器在运行?
  • 2017-06-05 关于线程的问题,求教各位前辈!~~~
  • 2017-06-04 ActiveX和Dll?
  • 2017-06-05 OpenFileMapping为何总是失败?
  • 2017-06-05 弱问:::关于deleteCWinThread对象
  • 2017-06-05 OCX如何不降低浏览器安全性就可以安装和运行
  • 2017-06-04 关于多声卡播放问题!
  • 2017-06-04 求教activex开发的ocx在XP运行可以再vista和win7下不能运行的问题
  • 2017-06-05 常规DLL中如何建立消息循环??来者不据,UP有分!!!
  • 2017-06-04 快捷方式中目标中的参数在activex中怎么用

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于在工作线程中激发com事件的问题
    • 知道一个进程的句柄,如何得到此进程的ID。
    • shellcreateinstance的兼容性问题!大侠帮帮忙啦!
    • ActiveX对话框中创建Flash,Flash和ActiveX对话框交互问题
    • 一个关于多线程的有趣的问题,谁能解释一下?谢谢。
    • COM控件跨平台//ATL工程里加一个MFC对话框,能在linux使用?
    • 那里有windowsmediaplayersdk,下载阿?
    • 取页面元素的坐标问题
    • 请问jameshooo
    • CComBSTRUnicode乱码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有