动态连接库的两种方式 ?
3个回答
展开全部
调用一个DLL中的函数有两种方法:
1.载入时动态链接(load-time dynamic linking),模块非常明确调用某个导出函数,使得他们就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向系统提供了载入DLL时所需的信息及DLL函数定位。
2.运行时动态链接(run-time dynamic linking),运行时可以通过LoadLibrary或LoadLibraryEx函数载入DLL。DLL载入后,模块可以通过调用GetProcAddress获取DLL函数的出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入库文件了
1.载入时动态链接(load-time dynamic linking),模块非常明确调用某个导出函数,使得他们就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向系统提供了载入DLL时所需的信息及DLL函数定位。
2.运行时动态链接(run-time dynamic linking),运行时可以通过LoadLibrary或LoadLibraryEx函数载入DLL。DLL载入后,模块可以通过调用GetProcAddress获取DLL函数的出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入库文件了
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
展开全部
动态链接库加载函数的两种方法:
第一种是静态链接方式,在这种方式下,动态链接库中的所有数据代码都将拷贝到调用程序的代码空间中去,此时它和调用程序本身的函数没有什么区别;
第二种是动态链接方式,在这种方式下,动态链接库中的数据代码是在需要的时候才拷贝到内存中去的;
两种方式都可以将外部(动态链接库中的)代码资源提供给调用者使用,但前者是全局的,虽随时可以使用,但会增加内存;而后者是局部的,虽节省了内存,但会增加调用时间。
第一种是静态链接方式,在这种方式下,动态链接库中的所有数据代码都将拷贝到调用程序的代码空间中去,此时它和调用程序本身的函数没有什么区别;
第二种是动态链接方式,在这种方式下,动态链接库中的数据代码是在需要的时候才拷贝到内存中去的;
两种方式都可以将外部(动态链接库中的)代码资源提供给调用者使用,但前者是全局的,虽随时可以使用,但会增加内存;而后者是局部的,虽节省了内存,但会增加调用时间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
载入时动态链接与运行时动态链接的区别
(一)载入时动态链接
操作系统将程序载入内存时,也将程序中用到的库文件映射到进程的地址空间中。
(二)运行时动态链接
操作系统将程序载入内存时,不将程序中用到的库文件映射到进程的地址空间中。
当程序中的LoadLibrary()函数被执行时,相应的库文件才开始被映射到进程的地址空间中。
如果该函数被包含在一个if语句中,条件不成立时,该函数不会被执行,相应的库文件也不会被映射到进程的地址空间中。
参考资料:
尤晋元《windows 操作系统原理》
(一)载入时动态链接
操作系统将程序载入内存时,也将程序中用到的库文件映射到进程的地址空间中。
(二)运行时动态链接
操作系统将程序载入内存时,不将程序中用到的库文件映射到进程的地址空间中。
当程序中的LoadLibrary()函数被执行时,相应的库文件才开始被映射到进程的地址空间中。
如果该函数被包含在一个if语句中,条件不成立时,该函数不会被执行,相应的库文件也不会被映射到进程的地址空间中。
参考资料:
尤晋元《windows 操作系统原理》
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询