显示链接 隐式链接

显示连接指知道函数的原型,定义一个函数指针后,用LoadLibrary和GetProcAddress函数取函数的地址的方法。隐式链接指已经包含了函数的.h文件,直接引用函数,在连接的时候将.lib文件连接进去。隐式链接后,exe程序一加载,Windows自动在先查找exe文件当前目录有没有dll,如果没有则按搜索路径查找,如果搜索路径也没有则会弹出对话框报错,提示找不到dll文件。而显示加载在LoadLibrary函数返回的句柄为NULL,则说明找不到dll,否则就是dll文件加载进内存的句柄。
如果dll文件只输出函数,可以用工具implib产生lib引入库,若dll输出整个类,就没办法了。目标文件lib还要注意Microsoft和Borland的区别:Microsoft现在用的COFF格式,而Borland用的是Intel的OMF格式,不能混用。
应用程序导入函数与DLL文件中的导出函数进行链接有两种方式:隐式链接和显式链接。所谓的隐式链接是指在应用程序中不需指明DLL文件的实际存储路径,程序员不需关心DLL文件的实际装载。而显式链接与此相反。
  采用隐式链接方式,程序员在建立一个DLL文件时,链接程序会自动生成一个与之对应的LIB导入文件。该文件包含了每一个DLL导出函数的符号名和可选的标识号,但是并不含有实际的代码。LIB文件作为DLL的替代文件被编译到应用程序项目中。当程序员通过静态链接方式编译生成应用程序时,应用程序中的调用函数与LIB文件中导出符号相匹配,这些符号或标识号进入到生成的EXE文件中。LIB文件中也包含了对应的DLL文件名(但不是完全的路径名),链接程序将其存储在EXE文件内部。当应用程序运行过程中需要加载DLL文件时,Windows根据这些信息发现并加载DLL,然后通过符号名或标识号实现对DLL函数的动态链接。
显式链接方式对于集成化的开发语言(例如VB)比较适合。有了显式链接,程序员就不必再使用导入文件,而是直接调用Win32 的LoadLibary函数,并指定DLL的路径作为参数。LoadLibary返回HINSTANCE参数,应用程序在调用GetProcAddress函数时使用这一参数。GetProcAddress函数将符号名或标识号转换为DLL内部的地址。

补充:对于VC++链接程序所链接产生的程序 ,其默认的基本地址空间地址为0x00400000

 

 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium中的显示等待和隐式等待是用于在自动化测试中等待页面加载和元素出现的方法。 显示等待需要先导入显示等待所需的模块和等待条件。通过指定最长等待时间和查询元素的频率,直到条件满足或超时后才继续执行后续操作。使用举例中的代码,可以在打开百度页面后,等待10秒钟,每0.5秒检查一次是否存在id为"s-top-loginbtn"的元素,直到该元素出现或超时才继续执行下一步操作。 隐式等待是一次设置,全局生效的等待方法。它会在一个时间段内等待页面加载完成,如果在规定时间内加载完成则执行下一步,否则等待时间结束后执行下一步。隐式等待不应该被频繁地使用,只需要在测试开始前设置一次即可。使用举例中的代码,可以在打开百度页面后,等待5秒钟,直到页面加载完成后才继续执行下一步操作。 所以,显示等待和隐式等待都是用于等待页面加载和元素出现的方法,但显示等待是有条件等待,可以指定等待条件和超时时间,而隐式等待是无条件等待,只需设置一个最长等待时间。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [selenium的三种等待方式(显示等待,隐式等待,强制等待)简单了解与总结](https://blog.csdn.net/qq_44728587/article/details/122997412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值