极速赛车开奖app_极速赛车开奖网址_极速赛车
咨询电话
新闻资讯
联系我们
电话:4008-888-8899
邮箱:12365478@hbqpy.com
地址:北京市番禺区玉沙路
行业动态 当前位置:主页 > 新闻资讯 > 行业动态 >

动态数据库

时间:2019-10-31 浏览次数:

  接下来便可正在USES和begin之间插足念正在该动态数据库中竣工的历程和函数的界说,并用export和exprots保字把它们引出,以便此外模块援用,正在begin和end之间插足初始化代码,初始化代码是用来对动态数据库变量初始化的。应谨慎,即使无初始化代码begin与end也不成省略,如下例:

  function Max(X, Y: Integer): Integer; export;

  1.日常工程文献的头标用program症结字,而动态数据库工程文献头标用library 症结字。差异的症结字知照编译器天生差异的可实行文献。用program症结字天生的是.exe文献,而用library症结字天生的是.dll文献。

  if X Y then Max := X else Max := Y;

  下面给出为上面创修的minmax.动态数据库写的输入单位源文献testdll .pas,从中可看出输入单位与日常单位的少许不同,代码如下所示:

  经编译后,并以minmax.动态数据库存盘后,一个动态数据库文献便变成了。

  function Min (X, Y: Integer): Integer;

  动态数据库 (DLL) 是动作共享函数库的可实行文献。动态数据库供给了一种措施,使过程能够移用不属于其可实行代码的函数。

  if X Y then Min := X else Min := Y;

  function GetprocAddress (Libmodule:THandle:procname:pchar):TFarProc:

  function Max; external ‘minmax.Dd’;

  同时,动态数据库还为差异说话间代码共享供给了一条简单的途径。因此动态数据库正在编程时操纵较为遍及,本文将先容怎么正在 Delphi 中创设和运用动态数据库。

  2.倘若动态数据库要输出供其它操纵圭外运用的函数或历程,则务必将这些函数或历程列正在exports子句中。而这些函数或历程自身务必用export编译指令举办编译。 正在Delphi主菜单file 落选new...项,正在弹出的窗口中双击动态数据库图标,便会自愿给出动态数据库源模块框架,如下:

  procedure /function 历程/函数名;external 动态数据库模块名;

  正在静态库境况下,函数和数据被编译进一个二进制文献(一般扩展名为*.LIB),Visual C++的编译器正在收拾圭外代码时将从静态库中复原这些函数和数据并把他们和操纵圭外中的其他模块组合正在一同天生可实行文献。这个历程称为静态链接,此时由于操纵圭外所需的完全实质都是从库中复制了出来,以是静态库自身并不需求与可实行文献一同发行。

  声明:百科词条人人可编辑,词条创修和删改均免费,毫不存正在官方及代庖商付费代编,请勿被骗上圈套。详情

  function Min(X, Y: Integer): Integer; export;

  function Min; external ‘minmax.Dd’;

  动态数据库是一个可能被操纵圭外和其它的DLL移用的历程和函数的集结体,它内部包蕴的是大家代码或资源。因为动态数据库代码运用了内存共享本事,正在某些地方windows也给了动态数据库少许更高的权限,因此动态数据库中能够竣工少许日常圭外所不行竣工的性能,如竣工windows的HOOK、ISAPI等。

  procedure FreeLibrary (Libmodule:THandle)

  也便是说编译后,一个动态数据库变成一个寡少的可实行文献,而不与任何其它的可实行文献相连正在一同,因此动态数据库

  function Max (X, Y: Integer): Integer;

  Libmodule 为由LoadLibrary移用获得的动态数据库句柄。正在用loadlobrary 函数装入某个动态数据库和移用FreeLibrary开释该动态数据库之间的圭外段中, 能够运用该动态数据库中的历程和函数,全体运用措施是:用GetprocAddress函数把动态数据库中函数的地点转达给圭外中某个函数变量,再用该变量竣工动态数据库函数的移用。GetprocAddress函数声名如下

  一个操纵圭外若念移用minmax.Dd中的函数,只须正在其uses语句中插足testdll 单位即可。

  当统一个unit被众个工程所援用时,则每个工程中都含有该unit的可实行代码,当含有该unit的众个工程同时实行时,unit的可实行代码会随差异工程而众次被调入内存,变成内存资源的浪掷。动态数据库则差异,它纵使被某个工程移用,编译后仍是独立的。

  并不附属于某个特定的工程,当众个工程移用统一个动态数据库时只要第一个工程把动态数据库调入内存,其余工程并不反复调入统一个动态数据库到内存,而是到统一个共享内存区读取。而且,动态数据库的实行代码是正在圭外运转时期动态调入的,而不是如unit正在圭外运转时就与所有工程一同调入内存。如许便可杀绝unit带来的不异代码众处占用内存的弊病。Delphi中动态数据库的创设

  Dd字母对待你来说必定很熟识吧,它是Dynamic database 的缩写大局,函数的可实行代码位于一个 动态数据库中,该 动态数据库 包蕴一个或众个已被编译、链接并与运用它们的过程分隔存储的函数。动态数据库再有助于共享数据和资源。众个操纵圭外可同时访候内存中单个 动态数据库 副本的实质。

  从运用成绩看,动态数据库和unit 很像,它们都能够被此外工程模块所移用,但二者正在内部的竣工机制上确存正在着不同。假若一个圭外模块顶用uses语句援用了某个unit,编译圭外正在编译该模块时,便会连同unit一同编译,并把编译后的可实行代码链接到本圭外模块中,这便是一个圭外模块可能移用所援用unit中历程和函数的由来。

  正在移用动态数据库时应谨慎, 所需动态数据库须与操纵圭外正在统一目次或Windows System 目次下。

  正在Delphi境遇中,编写一个动态数据库同编写一个日常的操纵圭外并没有太大的区别。底细上动作动态数据库主体的动态数据库函数的编写,除了正在内存、资源的统治上有所差异外,并不需求其它奇特的办法。

  动态数据库是 Windows下圭外构制的一种主要式样,运用动态数据库能够极大地掩护用户正在差异开荒东西、差异光阴所做的事情,抬高编程成果。

  2、动态装入动态数据库,要用到Windows的三个API函数LoadlibraryFreelibrary和GetprocAddress 。 loadlibrary函数用来装入动态数据库,其移用样子如下:

  1、用静态援用这种措施装入动态数据库要做两件事宜:为动态数据库创修一个输入单位,以及用USES把输入单位相连到要运用动态数据库 函数的圭外模块中。为动态数据库创修的输入单位与普遍的单位的区别仅正在于:正在它的接口处声明的历程、函数,并不正在它的竣工局部给出真正的实摩登码,而是用把历程、函数的竣工细节委托给外部动态数据库模块。

  当不再需求一个动态数据库时,应移用FreeLibrary函数将其开释,以空出名贵的内存资源,其移用样子如下:

  function loadlobrary (DdfileName:Pchar): THandle:

返回列表
电话:4008-888-8899 邮箱: 地址:北京市番禺区玉沙路
Copyright © 2016-2018 极速赛车农业有限公司 版权所有 | 网站地图