[转载]ocx与dll的区别

[转载]:http://blog.cechina.cn/Chennousstar/41703/message.aspx

 

一、关于DLL的介绍
  DLL,动态链接库,Dynamic Link Library的缩写,是一个包含函数和数据的模块集合,可以被其它应用程序共享的程序模块。DLL作为共享函数库的可执行文件,封装了一个或多个已被编译、链接的函数。多个进程可以同时使用一个 DLL,在内存中共享该 DLL 的一个副本。DLL 还有助于共享数据和资源。 它和可执行文件(.EXE文件)非常类似,他们的区别在于 DLL 中虽然包含了可执行代码却不能单独执行,只能由需要使用它的应用程序来直接或间接调。
通俗的说,在Windows操作系统中,许多应用程序并不是一个完整的可执行文件,它们的正确执行需要调用一些相对独立的动态链接库,即DLL文件。一个应用程序可以调用多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享 DLL 文件。DLL 文件一般被存在C:\Windows\System 目录下,也可能放在应用程序所在的目录或是子目录中。
  提到动态链接,先说明一下静态连接。什么是静态连接呢?在程序链接的过程中,需要将编译后的二进制代码链接成目标代码,链接器从静态链接库中获得所有被引用的函数,并将这些被引用的函数同代码一起放到可执行文件中。那么关于 DLL 的静态连接则是指链接器将被引用的库函数的代码复制到调用 DLL 的可执行模块(.dll 文件或 .exe 文件)中。
  什么是动态链接呢?动态链接是系统允许可执行模块(.dll 文件或 .exe 文件)在运行程中,只需要包含在定位 DLL 函数的可执行代码所需的信息。换句话说,可执行模块(.dll 文件或 .exe 文件)在运行时加载这些模块(亦即所需的模块映射到调用进程的地址空间)。
那么动态链接和静态连接 相比,优点有哪些呢?
(1)节省内存,减少交换操作。使用动态链接,多个进程可以同时使用一个 DLL,在内存中共享该 DLL 的一个副本。使用静态链接,每个应用程序都包含被引用的库函数的代码,那么Windows 必须在内存中为每个应用程序加载引用的库函数的代码的一个副本。
(2)节省磁盘空间。使用动态链接,在磁盘上仅需要 DLL 的一个副本。使用静态链接,每个应用程序都包含被引用的库函数的代码。
(3)更易于升级。使用动态链接,DLL 中的函数发生变化时,只要函数的参数和返回值没有更改,就不需重新编译或重新链接使用它们的应用程序。使用静态链接,在函数发生变化时,需要重新链接来生成应用程序。
(4)支持多语言程序,只要程序遵循函数的调用约定,用不同编程语言编写的程序就可以调用相同的DLL 函数。
(5)提供扩展 MFC 库类的机制。可以从现有 MFC 类派生类,并将它们放到 MFC 扩展 DLL 中供 MFC应用程序使用。
(6)支持多语言程序,并使国际版本的创建轻松完成。通过将资源放到 DLL 中,创建应用程序的国际版本变得容易得多。可将用于应用程序的每个语言版本的字符串放到单独的 DLL 资源文件中,并使不同的语言版本加载合适的资源。
  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 环境变量不用于搜索。
  DLL 有一个特殊的入口点(DllMain 函数),它在附加和分离进程和线程时运行。此行为允许根据需要创建和销毁数据结构。文件扩展名为 .ocx、.cpl 和 .drv 的文件类型也是 DLL,尽管文件扩展名已改变。
您可以通过创建 DLL 实现以下目的:
(1)将程序划分为可按需加载的单独模块。
(2)存储特定于语言或特定于区域的资源。
(3)使您自己的应用程序能够使用核心代码库。
(4)生成进程内 COM 对象或 ActiveX 控件 (OCX)。
(5)将 OLE 对象用作进程内 DLL。这一用法可改进 OLE 链接的性能。
(6)使用控制面板扩展或使用某些类型的驱动程序。
  二、关于以.ocx为后缀名的ActiveX控件
刚才提到过,文件扩展名为 .ocx、.cpl 和 .drv 的文件类型也是 DLL。
现在的ActiveX 控件等价与以前的OLE控件或OCX,一个典型的控件包括设计时和运行时的用户界面,唯一的IDispatch接口定义了控件的属性和方法,唯一的 IConnectionPoint接口定义控件可引发的事件。一个控件可以在容器中运行,所以从运行的角度看它类似与一个DLL。
尽管 ActiveX 和 OLE 都基于组建对象模型(Component Object Model,COM),它们为程序员提供的却是截然不同的服务。COM提供的是低级的对象捆绑机制,该机制支持对象之间的交互通讯。OLE使用COM来提供低级的应用服务,例如采用连接和嵌入机制,支持用户创建复合文档。与之不同,ActiveX提供更精细的结构,用以支持在网络站点上嵌入控件,以及对事件的交互反应。优化ActiveX,目的是为了提高时间和空间效率,而优化OLE,是为了便于终端用户的使用和集成台式系统的应用程序。ActiveX还为Internet技术带来了一些技术上的变革,例如,ActiveX大大减小了代码量(代码量减少了百分之五十到七十),支持更多的提交和异步连接。
  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为后缀名的文件是一个包含函数和数据的模块集合,可以被其它应用程序共享的程序模块。

另:VB中的模块与类模块

模块是VB用于将不同类型过程代码组织到一起而提供的一种结构。在VB中具有三种类型的模块,即窗体模块,标准模块和类模块。类模块用于创建新的对象类的属性,方法的定义等。
  模块可以写一些公共函数,类模块是完成某个功能用的,一般一个类模块完成一个功能。
  模块说白了就是可以放一堆function和sub的一个单独的文件,非对象化的。而类模块,说白了就是一个自定义的类。里面主要面向对象的。你可以自定一个对象,然后设置它的属性和方法。举个例子,比如说关机,可以写成模块中的一个过程。
而游戏中,比如一个坦克,最好写成一个类模块。比如说有坦克的生命,坦克的攻击力,坦克的攻击范围,这是属性。还有坦克的死亡等,这些方法。还有坦克被攻击等,这是事件

转载于:https://www.cnblogs.com/Jade2009/archive/2010/01/08/1642076.html

网页调用ocx,ocx调用dll 编写一个html网页文件,调用C++编写的ocx文件,编写一个com组件产生ocx,ocx调用C++编写产生的dll文件。 立即下载

相关推荐

OCX和DLL控件的注册

OCX和DLL控件的注册 1。通过修改注册表使右击OCX或DLL文件时出现注册和反注册的菜单项。 2。在命令行中使用regsvr32,方法如下:

ocx dll activex com ole介绍

ActiveX,OLE是基于COM的一种应用,其文件后缀一般以dll和ocx结尾;ocx作为一种特殊的dll文件,具有一定的用户界面和事件响应,而dll文件只是方法和属性的集合。一、关于DLL的介绍     DLL,动态链接库,Dynamic Link Library的缩写,是一个包含函数和数据的模块集合,可以被其它应用程序共享的程序模块。DLL作为共享函数库的可执行文件,封装了一个或多个已被

cesium的专栏 1722

ocx,DLL注册的工具

ocx,dll注册工具很好用的1111111111

DLL与OCX的区别

熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多人还是比较模糊的。 在具体介绍它们的关系之间,我们还是先明确组件(Component)和对象(Object)之间的区别。   组件是一个可重用

crystal的专栏 3017

MacOS M芯片部署ComfyUI:从环境排雷到插件生态一站式指南

本文为MacOS M系列芯片用户提供了一份详尽的ComfyUI部署指南。文章深入剖析了因架构差异导致的常见安装报错根源,并给出了基于MPS后端的正确PyTorch安装命令。从创建纯净Python虚拟环境、分步安装依赖,到验证GPU加速,手把手指导完成部署。同时,还推荐了包括管理器、汉化在内的必备插件,以完善使用生态,帮助用户一站式解决从环境搭建到效率提升的所有问题。

weixin_29261711的博客 994

【生产实践】SSH服务弱加密算法修复指南(附完整操作流程)

SSH服务弱加密算法漏洞修复方案 检测发现SSH服务存在支持弱加密算法漏洞,主要风险包括: 使用arcfour、aes128-cbc等易被破解的算法 面临密钥恢复、重放攻击等安全威胁 提供两种修复方案: 推荐方案:升级OpenSSH至最新版本 替代方案:修改SSH配置禁用弱算法(需注意可能影响旧客户端连接) 修复步骤: 编辑/etc/ssh/sshd_config 注释或删除弱算法配置 添加强加密算法(如aes128-ctr等) 重启SSH服务 注意事项: 建议先在测试环境验证 可能需配合客户端升级 操作前

SunMy的博客 3105

dll和ocx的简单理解

一、dll dll就是打包一些程序或者算法,根据我的理解分个类 1、算法的打包 比如打包C/C++的一些纯代码算法,计算平均值,极值,标准差....,只需要向外提供接口和入口参数,外部即可轻松调用 2、带依赖项的打包 这里的依赖项是带设备的dll,如一套采集视频的设备,配套的dll已经完成了摄像头的初始化、打开、采集、传输、关闭等操作,向外提供这些操作的接口如init()、open()、data...

大AI时代,人性化的信息更加难得可贵 180

FPGA新手必看:Create HDL Wrapper和Generating Output Products到底该先用哪个?

本文深入解析了FPGA设计中Create HDL Wrapper与Generating Output Products的正确使用顺序,帮助新手避免常见错误。详细介绍了两者的功能差异、执行顺序的底层逻辑以及工程管理的最佳实践,特别适合使用Vivado进行FPGA开发的初学者。

xk7n92h3p5m的博客 1065

ocx转dll

本例使用的是vs20101.打开VS2010命令提示符(以管理员权限运行,否则有可能报错)将ocx文件拷贝到VS安装目录下的VC文件夹下2.注册ActiveX控件(转换前一定要先注册,注册成功后会提示注册成功)regsvr32 文件.ocx3.编译OCX文件aximp 文件.ocx生成两个dll文件,项目中引用Ax前缀的文件4。将生成的两个dll文件拷贝到项目中注:虽然将ocx转成了dll但是在没...

Nanan_Yan的博客 2625

docker安装的 n8n提示Your n8n server is configured to use a secure cookie, however you are either visiting

将原来的docker n8n进行删除后即可通过一下方式重新安装,如安装完n8n,提示。

满地找牙的博客 3366

多GPU时代的虚拟内存革命:CUDA VMM API的跨设备协同设计哲学

本文深入探讨了NVIDIA CUDA VMM API在多GPU系统中的虚拟内存管理革命,解决了传统Peer Access的显存碎片化和同步开销问题。通过地址-内存解耦、按需映射和精细权限控制,VMM API为分布式训练提供了高效的内存协同方案,显著提升大模型训练性能。

weixin_29251337的博客 535

Activex、OLE、COM、OCX、DLL之间有什么区别?(转载学习)

Activex、OLE、COM、OCX、DLL之间有什么区别? 转载地址:http://fykyx521.iteye.com/blog/446275 http://www.blogjava.net/Jack2007/archive/2008/04/27/196392.html Activex 、OLE、COM、OCX、DLL之间有什么区别 ? - 走在架构师的大道上 ...

blacet的学习点滴 1391

PCL:实现 PPF估计(附完整源码)

PCL:实现 PPF估计(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 717

OCX与DLL的区别

转自:http://blog.youkuaiyun.com/scucj/article/details/852181 因为工作的原因开始接触OCX控件的开发,原来从事的工作中,大多数设计的是标准C和C++,很少涉及C及C++语言的应用,最近在项目中的学习也让我深深的感觉到之前课堂讲解内容的肤浅,虽然原来以为讲解的内容已经相当深刻和丰富,但经过这个阶段的学习,由衷的感到愧疚,感到自己的眼界和水平阻碍和限制

除却猩猩不是猿 1532

机器人动力学仿真软件:Webots_(14).机器人声音仿真

Webots 中的声音仿真主要通过Sound和两种节点来实现。Sound节点用于播放预定义的音频文件,而节点则允许在仿真过程中动态生成和播放声音。这些节点可以用于模拟机器人的语音输出、报警声、环境噪音等。以下是一个示例,展示如何在控制器代码中播放预定义的声音。// 控制器代码(.c) # include <webots/robot.h> # include <webots/sound.h> # define TIME_STEP 64 const char * sound_name = "sound";

kkchenjj的博客 1312

基于opencv人脸识别实现课堂抬头率检测系统 完整代码 可直接运行 作为毕设

基于opencv人脸识别实现课堂抬头率检测系统 完整代码 可直接运行 作为毕设

机器学习深度学习业余选手 1146

转载exe和dll的区别

<br />http://www.cnblogs.com/laynelin/archive/2009/12/31/1636767.html<br /> <br />The distinction between EXE and DLL files is entirely one of semantics. They both use the exact same PE format. The only difference is a single bit that indicates if the file

孤悬海外 371

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

转载:EXE和DLL的区别

转载自:http://space.cnblogs.com/question/812/ The distinction between EXE and DLL files is entirely one of semantics. They both use the exact same PE format. The only difference is a single bit that ...

weixin_30897079的博客 86

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OCX和DLL的区别

http://www.blogjava.net/JAVA-HE/archive/2009/05/06/269262.html 转载于:https://www.cnblogs.com/matthew-2013/p/3480302.html

weixin_30593443的博客 282

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

DLL,ACTIVEX,COM,插件区别

COM和DLL的区别: 1) dll是以函数集合VC必须加上extern "C"。的方式来调用的,是编程语言相关的,如: 而COM是以interface的方式提供给用户使用的是一种二进制的调用规范,是与编程语言无关的。 2) DLL只有DLL一种形势, 里面可任意定义函数无限制, 只能运行在本机上 ,而COM 有DLL和EXE两种存在形势。 3) COM所...

weixin_34205076的博客 1215

DLL 组件(Component) 对象(Object) OLE控件 ActiveX控件 OCX COM 收藏

DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源,一般来说,DLL是一种磁盘文件,以.dll、.DRV、.FON、.SYS和许多以.EXE为扩展名的系统文件都可以是DLL; 它由全局数据、服务函数和资源组成,在运行时被系统加载到调用进程的虚拟空间中,成为调用进程的一部分。如果与其它 DLL 之间没有冲突,该文件通...

weixin_30894389的博客 195

[科普]Activex、OLE、COM、OCX、DLL

原创文章,欢迎转载。转载请注明:转载自 祥的博客 原文链接: 1. 基础 2.关系 3.注册ActiveX控件 找到一篇非常不错的博文,无奈文章排版太差劲了,所以我重拍了一下。 原文链接:https://www.xuebuyuan.com/2013734.html 1. 基础 熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM...

祥的专栏 1248

ATL和ActiveX做的控件.dll和.ocx最主要的区别(摘录)

楼主是不是说用ATL做的控件和用MFCActiveXwizard的控件有什么区别吧依存的动态库不一样,一个是ATL.DLL吧,一个是MFC42.DLL。 ATL开发的控件代码少,轻便,便于网上发布;MFC开发的控件笨重,但是MFC类库丰富,利用它便于开发一些具有美观大方界面的控件;这两者各有优势,选择哪个工具就要看你开发什么样的控件了。比如说示波器面板控件、X-Y绘图仪控件等用来显示图形...

weixin_30408309的博客 152

概念相关

ActiveX控件是可以在应用程序和网络中计算机上重复使用的程序对象。创建它的主要技术是Microsoft的ActiveX技术,其中主要是组件对象模型(COM) ActiveX 控件代替了原先的OCX,它与JAVAapplet的概念和功能差不多。ActiveX控件可以由不同的可以识别Microsoft的COM技术的语言开发,它是一个组件或自包含的软件包,它可以在同一个或分布式的计算环境中开发或使...

weixin_30287169的博客 160
上一篇: 深入浅出Wince的存储
下一篇: 在Windows Embedded中获取设备ID
aotingyou8613
博客等级 码龄11年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值