显示链接 隐式链接
来源:互联网 发布:李红涛 知乎 编辑:程序博客网 时间:2024/05/16 14:50
显示连接指知道函数的原型,定义一个函数指针后,用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文件只输出函数,可以用工具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
- 显示链接 隐式链接
- 隐式链接和显示链接的区别
- DLL系列---Dll的隐式链接和显示链接
- 动态库的显示链接和隐式链接
- 孙鑫 Lesson19 动态链接库 显示与隐式
- DLL的显示链接
- DLL的显示链接
- 跟链接显示图片
- 显示文章相关链接
- 禁止状态栏显示链接
- setText() 显示链接
- textView显示文字链接
- cat 链接并显示
- 点击链接,显示段落。
- HTML滚动链接显示
- 链接
- 链接
- 链接
- Linux那些事儿之我是U盘(9)总线,设备,和驱动(下)
- DX记录
- 灵活运用用第3方软件把“SWF”变回“FLA”
- 学习Java需要达到的30个目标和11条检验标准
- jdom+JSP+XML 留言板
- 显示链接 隐式链接
- 搜索引擎研究新技术zz
- 一个牛人给java初学者的建议
- C++学习的一点儿建议 by杨过
- Web 2.0 Vs Web 3.0 - 9Fav在玩概念?
- 回家的感觉真好
- 用sdk写了一个简单界面
- 新版的SetFileAttribute V 1.01
- XML学习笔记之文档类型定义(DTD) 和实体(ENTITY)