当前位置: 首页 > news >正文

南沙网站建设哪家好网站下载音乐

南沙网站建设哪家好,网站下载音乐,做网站域名解析,网站服务器 内存动态链接库#xff08;Dynamic Link Library#xff0c;简称 DLL#xff09;是一种在运行时加载的库#xff0c;可用于在多个应用程序之间共享代码和数据。与静态链接库相比#xff0c;动态链接库的主要优劣势如下#xff1a; 优势#xff1a; 空间效率更高#xff0…动态链接库Dynamic Link Library简称 DLL是一种在运行时加载的库可用于在多个应用程序之间共享代码和数据。与静态链接库相比动态链接库的主要优劣势如下 优势 空间效率更高因为库代码和数据不需要在每个应用程序中都有一份副本更新和维护更容易因为库的所有应用程序都会受益于更新而无需重新编译每个应用程序可以通过更新动态链接库的版本来解决库中的错误或安全漏洞而不必重新编译每个应用程序。 劣势 运行时加载可能会导致性能损失库的版本控制可能会变得复杂因为多个应用程序可能需要不同版本的库库的依赖关系可能会变得复杂因为库本身可能依赖于其他库。 以下是一些动态链接库开发的基本步骤 编写代码编写您想要共享的代码和数据将其放入一个或多个源文件中。 编译代码使用适当的编译器和选项将源代码编译为共享对象文件.so 文件或动态链接库文件.dll 文件。 链接代码将库的对象文件链接到动态链接库文件中以便它们可以在运行时加载。 测试库编写一个或多个测试程序以确保库可以正常工作并且在不同的应用程序中正确地共享。 安装库将库文件和任何必需的头文件、文档和其他资源安装在系统中以便其他开发人员可以使用它。 文档化库为库编写文档以便其他开发人员可以了解如何使用它以及如何与它交互。 总的来说动态链接库是一种非常有用的工具可以帮助开发人员在多个应用程序之间共享代码和数据减少代码冗余并提高开发效率。 1、静态链接库和动态链接库 用静态库的话目标电脑上如果没有这个文件的话能正常使用程序用动态库的话目标电脑上必须要有这个文件才能正常使用程序或者你可以要发布程序的时候将这个文件一起打包。 2、动态链接库的连接方式隐式链接和显式加载 隐式链接就是在程序开始执行时就将DLL文件加载到应用程序当中在链接时需要用到lib文件才能直接通过DLL中导出的函数名来调用函数显式加载则是在运行时加入在代码中需要显式调用LoadLibrary()和FreeLibrary()而且在调用dll中导出的函数时需要使用GetProcAddress()获取想要引入的函数。 两种方式对于你的程序调用动态库时没有任何区别只是你在编程时步骤是不一样的显式调用麻烦了点但可以没有相应的lib库隐式调用使用起来比较简单有函数的声明就可以了但必须有lib库。 隐式加载默认是加载到内存中的始终占用内存显式加载你加载时占用内存释放了就不占用内存了。如果该DLL已经载入loadlibrary只是会增加一个引用计数相同freelibrary也只是减少引用计数如果引用计数为0时DLL才从内存中移除。 显式和隐式只是对于代码编写时来说的最后产生的可执行程序不管是显式和隐式都是用loadlibrary载入的。显式与隐式不是用在这些方面的显式加载适合需要动态的选用DLL的情况。使用导出类和导出结构体的时候隐式链接较为方便而显式链接则很麻烦。 显式链接库的好处在需要的时候加载动态链接库某个函数。 隐式链接的缺点使用比较简单在程序的其他部分可以任意使用函数但是当程序访问十来个dll动态链接库的时候此时如果都使用隐式链接的时候启动此程序的时候这十来个动态链接库都需要加载到内存映射到内存的地址空间这就会加大进程的启动时间而且程序运行过程中只是在某个条件下使用某个函数如果使用隐式链接会造成资源的浪费。这样需要采用显式动态加载的方式。 3、def和externC 如果DLL使用的是def文件要删除TestDll.h文件中关键字externC。 4、__declspec(dllimport)和__declspec(dllexport) 不使用__declspec(dllimport) 也能正确编译代码但使用 __declspec(dllimport) 使编译器可以生成更好的代码。编译器之所以能够生成更好的代码是因为它可以确定函数是否存在于 DLL 中这使得编译器可以生成跳过间接寻址级别的代码而这些代码通常会出现在跨 DLL 边界的函数调用中。但是必须使用__declspec(dllimport) 才能导入 DLL 中使用的变量。 5、动态载入显式链接DLL需要的三个函数 LoadLibrary,GetProcAddress,FreeLibrary 动态载入显式链接 DLL方式是指在编译之前并不知道将会调用哪些 DLL 函数 完全是在运行过程中根据需要决定应调用哪些函数。 使用方法是用LoadLibrary 函数加载动态链接库到内存用GetProcAddress函数动态获得 DLL 函数的入口地址。当一个 DLL 文件用LoadLibrary 显式加载后在任何时刻均可以通过调用FreeLibrary 函数显式地从内存中把它给卸载。 动态调用使用的Windows API 函数主要有 3 个 分别是LoadLibrary、GetProcAddress 和FreeLibrary。 1LoadLibrary函数 注Delphi中还提供了SafeLoadLibrary 函数它封装了Loadlibrary 函数可以装载由Filename 参数指定的WindowsDLL或Linux 共享对象。它简化了DLL的装载并且使装载更加安全。 [格式] functionLoadLibrary(LibFileName : PChar): Thandle; [功能]加载由参数LibFileName 指定的 DLL 文件。 [说明]参数LibFileName 指定了要装载的 DLL 文件名如果LibFileName 没有包含一个路径系统将按照当前目录、Windows目录、Windows系统目录、包含当前任务可执行文件的目录、列在 PATH环境变量中的目录等顺序查找文件。 如果函数操作成功将返回装载 DLL 库模块的实例句柄否则将返回一个错误代码错误代码的定义如下表所示。 错误代码   含义   0   系统内存不够可执行文件被破坏或调用非法   2   文件没有被发现   3   路径没有被发现   5   企图动态链接一个任务错误或者有一个共享或网络保护错误   6   库需要为每个任务建立分离的数据段     8   没有足够的内存启动应用程序   10   Windows  版本不正确     11   可执行文件非法或不是Windows  应用程序或在.  EXE映像中有错误     12   应用程序为一个不同的操作系统设计如  OS/2     13   应用程序为  MS  DOS   4. 0  设计     14   可执行文件的类型不知道     15   试图装载一个实模式应用程序为早期Windows  版本设计   16   试图装载包含可写的多个数据段的可执行文件的第二个实例     19   试图装载一个压缩的可执行文件文件必须被解压后才能被装载     20   DLL  文件非法   21   应用程序需要  32  位扩展 假如在应用程序中用 LoadLibrary 函数装入某一个 DLL 前其他应用程序已把该 DLL 装入内存中了则系统将不再装入该 DLL 的另一个实例而是使该 DLL 的“引用计数”加 1 。 2GetProcAddress 函数 [格式] function GetProcAddress(Module:Thandle;ProcName:PChar): TfarProc; [功能]返回参数 Module 指定的模块中由参数 ProcName 指定的过程或函数的入口地址。 [说明]参数 Module 包含被调用函数的 DLL 句柄这个值由 LoadLibrary 返回 ProcName是指向含有函数名的以 nil 结尾的字符串指针或者可以是函数的次序值但大多数情况下用函数名是一种更稳妥的选择。如果该函数执行成功则返回 DLL 中由参数 ProcName 指定的过程或函数的入口地址否则返回 nil 。 3FreeLibrary 函数 [格式] procedure  FreeLibrary(Module: Thandle); [说明]将由参数Module 指定的 DLL 文件从内存中卸载 1 次。 [说明]Module为 DLL 库的句柄。这个值由LoadLibrary 返回。由于 DLL 在内存中只装载一次因此调用FreeLibrary 首先使 DLL 的引用计数减 1如果计数减为 0 则卸载该 DLL。 [注意]每调用一次LoadLibrary 函数就应调用一次FreeLibrary 函数以保证不会有多余的库模块在应用程序结束后仍留在内存中否则导致内存泄漏
http://www.dnsts.com.cn/news/176088.html

相关文章:

  • 南宁建设厅网站网站开发与应用案例教程
  • 租赁商城手机网站开发坑梓网站建设怎么样
  • 建设文库网站域名怎么起
  • 可以做请柬的网站网站模板 茶叶响应式
  • 怎么自己做微信推送新闻优化大师win10
  • 网站数据怎么更新做网站的详细流程
  • 怎么看网站做没做推广seo排名教程技术
  • 博优云软件官方网站网页制作教程免费视频
  • 中学网站建设方案网站开发中的网页上传和网站发布
  • 后台网站要做权限前端还是后台做微信知彼网络网站建设
  • 做网站需要几个人分工3 阐述网站建设的步骤过程
  • 青岛微信网站制作企业网站开发知名品牌有哪些
  • 商业图片素材网站腐女喜欢做的网站
  • 力洋深圳做网站公司网站建设的特征
  • 网站服务器在哪里网页制作步骤是什么
  • 开一个网站建设公司需要什么软件常平做网站
  • 如何策划手机网站网络策划就业前景
  • 网站闪图怎么做的vvic一起做网站
  • 网站建设捌金手指专业5西安百度推广服务公司
  • 网站备案手机号标题制作网站
  • 浙江省国有建设用地使用权建议网站新手做网站需要多久
  • 做教育网站还挣钱吗c2c电子商务的网站
  • 网站建设的主要内容包括开发公司交房前期的各项准备工作
  • 打开网站显示404学校网站网页建设开题报告书
  • 企业为啥要做网站贵州省建设厅考证官方网站
  • 郑州大型网站建设价格关于网站建设论文
  • 上海大型网站合肥网络公司平台
  • 海淀区网站制作公司付费电影网站源码
  • 网站标题没有排名企业管理培训课程
  • 河南省和建设厅网站首页wordpress 页面下载文件