- 浏览: 174980 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (186)
- [网站分类]4.其他技术区 (93)
- [网站分类]6.转载区(Java技术文章转载, 请注明原文出处) (4)
- [网站分类]3.非技术区 (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (28)
- HTML&CSS (0)
- 感悟生活 (4)
- c#(.net) (1)
- [网站分类]2.Java新手区 (32)
- [网站分类]5.提问区(Java方面的技术提问) (1)
- java (6)
- web前端 (7)
- php (0)
- C++ (1)
- python (0)
- 互联网应用 (0)
最新评论
-
lliiqiang:
请求单线程资源只能等待结果.
Applet 与JS通信 -
feng2qin:
期待你的精彩回到。QQ:864479410
Applet 与JS通信 -
feng2qin:
我想问一句;哥们儿,applet程序中调用js,你真的成功了嘛 ...
Applet 与JS通信 -
lyaixsp:
...
ExtJS 入门学习之 window与panel篇 -
longzijian:
不知道 java-he 现在找到数组的这种特性 的原因在那里
和网友关于javascript数组的讨论
转自:http://blog.csdn.net/scucj/archive/2006/06/29/852181.aspx
OCX和DLL的区别
一、关于DLL的介绍
DLL,动态链接库,Dynamic Link Library的缩写,是一个包含函数和数据的模块集合,可以被其它应用程序共享的程序模块。DLL作为共享函数库的可执行文件,封装了一个或多个已被编译、链接的函数。多个进程可以同时使用一个 DLL,在内存中共享该 DLL 的一个副本。DLL 还有助于共享数据和资源。 它和可执行文件(.EXE文件)非常类似,他们的区别在于 DLL 中虽然包含了可执行代码却不能单独执行,只能由需要使用它的应用程序来直接或间接调。[1]
通俗的说,在Windows操作系统中,许多应用程序并不是一个完整的可执行文件,它们的正确执行需要调用一些相对独立的动态链接库,即DLL文件。一个应用程序可以调用多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享 DLL 文件。[2]DLL 文件一般被存在C:\Windows\System 目录下,也可能放在应用程序所在的目录或是子目录中。
提到动态链接,先说明一下静态连接。什么是静态连接呢?在程序链接的过程中,需要将编译后的二进制代码链接成目标代码,链接器从静态链接库中获得所有被引用的函数,并将这些被引用的函数同代码一起放到可执行文件中。那么关于 DLL 的静态连接则是指链接器将被引用的库函数的代码复制到调用 DLL 的可执行模块(.dll 文件或 .exe 文件)中。
什么是动态链接呢?动态链接是系统允许可执行模块(.dll 文件或 .exe 文件)在运行程中,只需要包含在定位 DLL 函数的可执行代码所需的信息。换句话说,可执行模块(.dll 文件或 .exe 文件)在运行时加载这些模块(亦即所需的模块映射到调用进程的地址空间)。[3]
那么动态链接和静态连接 相比,优点有哪些呢?
(1)节省内存,减少交换操作。使用动态链接,多个进程可以同时使用一个 DLL,在内存中共享该 DLL 的一个副本。使用静态链接,每个应用程序都包含被引用的库函数的代码,那么Windows 必须在内存中为每个应用程序加载引用的库函数的代码的一个副本。
(2)节省磁盘空间。使用动态链接,在磁盘上仅需要 DLL 的一个副本。使用静态链接,每个应用程序都包含被引用的库函数的代码。
(3)更易于升级。使用动态链接,DLL 中的函数发生变化时,只要函数的参数和返回值没有更改,就不需重新编译或重新链接使用它们的应用程序。使用静态链接,在函数发生变化时,需要重新链接来生成应用程序。
(4)支持多语言程序,只要程序遵循函数的调用约定,用不同编程语言编写的程序就可以调用相同的DLL 函数。
(5)提供扩展 MFC 库类的机制。可以从现有 MFC 类派生类,并将它们放到 MFC 扩展 DLL 中供 MFC应用程序使用。
(6)支持多语言程序,并使国际版本的创建轻松完成。通过将资源放到 DLL 中,创建应用程序的国际版本变得容易得多。可将用于应用程序的每个语言版本的字符串放到单独的 DLL 资源文件中,并使不同的语言版本加载合适的资源。[4]
DLL 中包含下面两类函数的定义:
导出函数:这些函数由可执行模块(.dll 文件或 .exe 文件)调用。
内部函数:这些函数仅从定义它们的 DLL 中调用。DLL 还导出数据。不过,这些数据由相应的函数使用。
可以通过下列方式调用 DLL 中的函数:
加载时动态链接:可执行模块执行显式调用以导出 DLL 函数。为 DLL 创建导入库,然后将 DLL 链接到应用程序。在加载应用程序时,导入库提供加载 DLL 和查找导出的 DLL 函数所需的信息。
运行时动态链接:在运行时加载 DLL 时,可执行模块使用 LoadLibrary 函数或 LoadLibraryEx 函数。可执行模块调用 GetProcAddress 函数以获取导出的 DLL 函数的地址。在链接时,Windows 搜索预安装的一组 DLL,例如性能库 (Kernel32.dll) 和安全库 (User32.dll)。然后,Windows 按以下顺序搜索DLL:
1.当前进程的可执行程序所在的目录。
2.当前目录。
3.Windows 系统目录。(GetSystemDirectory 函数获取 Windows 系统目录的路径。)
4.Windows 目录。(GetWindowsDirectory 函数获取 Windows 目录的路径。)
5.PATH 环境变量中列出的目录。注意:LIBPATH 环境变量不用于搜索。[3]
DLL 有一个特殊的入口点(DllMain 函数),它在附加和分离进程和线程时运行。此行为允许根据需要创建和销毁数据结构。文件扩展名为 .ocx、.cpl 和 .drv 的文件类型也是 DLL,尽管文件扩展名已改变。
您可以通过创建 DLL 实现以下目的:
(1)将程序划分为可按需加载的单独模块。
(2)存储特定于语言或特定于区域的资源。
(3)使您自己的应用程序能够使用核心代码库。
(4)生成进程内 COM 对象或 ActiveX 控件 (OCX)。
(5)将 OLE 对象用作进程内 DLL。这一用法可改进 OLE 链接的性能。
(6)使用控制面板扩展或使用某些类型的驱动程序。 [3]
二、关于以.ocx为后缀名的ActiveX控件
刚才提到过,文件扩展名为 .ocx、.cpl 和 .drv 的文件类型也是 DLL。
现在的ActiveX 控件等价与以前的OLE控件或OCX,一个典型的控件包括设计时和运行时的用户界面,唯一的IDispatch接口定义了控件的属性和方法,唯一的 IConnectionPoint接口定义控件可引发的事件。一个控件可以在容器中运行,所以从运行的角度看它类似与一个DLL。[5]
尽管 ActiveX 和 OLE 都基于组建对象模型(Component Object Model,COM),它们为程序员提供的却是截然不同的服务。COM提供的是低级的对象捆绑机制,该机制支持对象之间的交互通讯。OLE使用COM来提供低级的应用服务,例如采用连接和嵌入机制,支持用户创建复合文档。与之不同,ActiveX提供更精细的结构,用以支持在网络站点上嵌入控件,以及对事件的交互反应。优化ActiveX,目的是为了提高时间和空间效率,而优化OLE,是为了便于终端用户的使用和集成台式系统的应用程序。ActiveX还为Internet技术带来了一些技术上的变革,例如,ActiveX大大减小了代码量(代码量减少了百分之五十到七十),支持更多的提交和异步连接。 [6]
ActiveX的基础是OLE和COM,但是通过MS的各种开发工具可以屏蔽掉COM模型中许多另人费解的技术细节。ActiveX组件技术包括以下一些方面:(1)自动化服务器 (2)自动化控制器 (3)控件 (4)COM对象 (5)文档 (6)容器 。
以.ocx为后缀名的ActiveX控件主要应用在WEB上和Window Forms程序开发上。应用程序使用ActiveX/COM组件来扩展自身的业务逻辑、事务处理和应用服务的范围。
顺便提一下以.ocx为后缀名的ActiveX控件的注册和卸载方法,在“开始”菜单的“运行”输入以下代码完成任务:
regsvr32 path & "\xxx.ocx" '注册
regsvr32 /u path & "\xxx.ocx" '卸载
其中path代表该xxx.ocx所以在的目录的路径。
三、OCX和DLL的区别
以.ocx为后缀名的ActiveX控件是一种比较特殊的DLL,它的基础是OLE和COM,是有交互界面的可视化控件,定义了控件的属性和方法,定义控件可引发的事件的响应。我们通常说的.DLL为后缀名的文件是一个包含函数和数据的模块集合,可以被其它应用程序共享的程序模块。
发表评论
-
图象缓冲
2007-02-07 09:45 771图象缓冲的应用双缓冲绘图:<!--<br>& ... -
检验邮箱
2007-02-08 09:46 802<!--<br><br> ... -
批处理命令总结
2007-02-08 16:52 714批处理命令总结:@ 符号后 的命 ... -
学习UML笔记
2007-02-27 17:30 772学习 UML 笔记 前言 为了自己能快速将 UML ... -
blog加上一个同页面浏览者聊天室代码
2007-05-23 10:17 732都是用的别人提供的服务。哈哈。<script type= ... -
常见网页技巧
2007-06-10 16:32 5751.鼠标移动上去,图片变亮,移开又变成灰色。改变的是透明度。 ... -
javascript 数组排序
2007-07-01 03:16 735javascript 数组排序发现一个我原来不知道的事情: ... -
javascript 在客户端绘制图表系列三——xy坐标曲线图
2007-07-01 04:31 1347系列1、2中介绍过的内容在这里不会赘述。原理同面1、2基本一样 ... -
搭建php的运行环境
2007-07-31 18:50 904配置 php 环境 ... -
从网页导出excel
2007-08-09 21:36 745<?xml:namespace ... -
简单日期下拉框
2007-08-09 22:13 854项目中用到一个级联、动态下拉选择日期框。我以前也收集 ... -
php学习笔记1
2007-08-22 22:36 827前面总结过 ... -
php学习笔记2
2007-08-23 23:33 733主要内容:总结了第四章,主要关于字符串处理。参考书籍 ... -
分享一个表格排序程序
2007-08-23 23:46 672应广大网友要求特此分享一个表格排序的程序。有问题,欢迎留言(虽 ... -
AJAX愉快之旅——prototype.js篇
2007-08-24 09:53 611AJAX ... -
Javascript 事件转移
2007-09-19 08:52 749我遇到的Javascript 现 ... -
网页打印脚本
2007-09-19 08:55 1589<html><head><sty ... -
记录访问者IP
2007-09-19 10:46 855<?php //文件名字 $filename = &q ... -
JAVASCRIPT COOKIE初级指南
2007-12-23 23:43 6821、设置COOKIE数据: 最 ... -
PHP读取4种配置文件(php,ini,yaml,xml)
2007-12-23 23:49 873<?php/*** 读取4中配置的表信息,现支持php. ...
相关推荐
网页调用OCX控件和OCX控件调用DLL是Windows编程中常见的技术,尤其在ActiveX技术中。ActiveX控件(OCX)是一种可嵌入到Web页面中的小型程序,允许网页与本地系统进行交互。DLL(动态链接库)则是共享代码的模块,多...
在Windows操作系统中,OCX(Object Linking and Embedding, Control eXtension)和DLL(Dynamic Link Library)是两种非常重要的组件。OCX文件是ActiveX控件,主要用于开发用户界面,允许开发者创建可自定义的交互式...
### OCX和DLL控件的注册 #### 一、引言 OCX(Object Linking and Embedding Common Controls,OLE自定义控件)与DLL(Dynamic Link Library,动态链接库)是Windows系统中广泛使用的两种组件类型。这些控件通常...
Delphi 是一种强大的Windows应用程序开发工具,它支持创建ActiveX控件(OCX)和动态链接库(DLL)。本文档详细介绍了如何使用Delphi来开发OCX和DLL,并且特别适合初学者作为入门资料。 首先,让我们深入了解DLL。...
在Windows操作系统中,OCX(Object Linking and Embedding Control Extension)和DLL(Dynamic Link Library)是两种重要的组件。它们都是Microsoft开发的编程接口,用于实现软件功能的共享和复用。 **OCX控件**:...
这两个文件结合使用,可以全面地分析和解决与OCX控件和DLL相关的依赖问题。 使用这类工具,开发者可以: 1. 检查OCX控件是否缺失必要的DLL文件,以便确保在目标环境中正确运行。 2. 发现潜在的版本冲突,当多个版本...
关于swing嵌入ocx或dll影响控件的问题,自己研究了一下,今天发出来给大家共享一下。swing调用OCX或dll的方法有很多,其中包括:jcob、comfyj、jawin、jni、jna等等很多方式,但是如果要显示dll或ocx的控件在swing...
在Windows操作系统中,OCX(Object Linking and Embedding Control Extension)和DLL(Dynamic Link Library)是两种重要的组件类型。OCX是ActiveX控件,主要用于创建交互式的用户界面,而DLL则是共享库,用于存储...
本工具“获得COM组件(ocx、dll)的CLSID小工具”旨在帮助开发者和系统管理员便捷地获取已注册的COM组件的类ID(CLSID)。无需使用像OLE View这样的专业工具,用户可以直接通过该工具查询注册表,获取对应OCX或DLL的...
在Windows操作系统中,批处理(Batch)是一种自动化执行命令序列的方式,它可以帮助用户批量处理相似的任务,例如注册或卸载OCX(OLE控件)和DLL(动态链接库)文件。OCX是Microsoft开发的一种控件,常用于开发...
标题中的“OCX_DLL注册工具”是指一种专门用于处理OCX(对象链接和嵌入控件)和DLL(动态链接库)文件的程序。在Windows操作系统中,OCX是ActiveX控件的一种形式,用于扩展应用程序的功能,而DLL则允许多个程序共享...
在IT领域,OCX(Object Linking and Embedding Control Extensions)和DLL(Dynamic Link Library)是两种关键的组件,它们在Windows操作系统中扮演着至关重要的角色。标题提到的"可以查看ocx和dll接口信息的估计"指...
在Windows操作系统中,OCX(Object Linking and Embedding Control Extension)控件和DLL(Dynamic Link Library)文件是两种重要的组件。OCX控件是一种基于OLE技术的用户界面元素,通常用于开发桌面应用程序,提供...
在Windows操作系统中,OCX(Object Linking and Embedding Control Extension)和DLL(Dynamic Link Library)文件是非常重要的组件。它们都是微软开发的编程接口,用于实现应用程序间的代码共享和功能扩展。了解...
注册OCX DLL小软件注册OCX DLL小软件注册OCX DLL小软件注册OCX DLL小软件注册OCX DLL小软件注册OCX DLL小软件注册OCX DLL小软件注册OCX DLL小软件注册OCX DLL小软件
在Windows环境中,当开发者创建或更新OCX和DLL文件后,需要将其注册到系统中,以便操作系统和应用程序能正确识别和使用它们。手动注册通常通过命令行工具如`regsvr32.exe`完成,但这个过程可能对普通用户来说较为...
**DLL (动态链接库) 和 OCX (ActiveX 控件)** DLL(Dynamic Link Library)是Windows操作系统中的一种共享库,它包含了一组可执行的功能,可以被多个应用程序调用,以实现代码复用和节省内存。DLL文件包含了函数、...
标题中的“pb9二维码示例-OCX和DLL两种”指的是使用PowerBuilder 9(简称pb9)开发的二维码处理程序,它展示了如何通过两种不同的技术来实现二维码的生成、显示和打印:OCX(ActiveX Control)和DLL(动态链接库)。...