读书人

请教动态链接库直接使用头文件包含和L

发布时间: 2012-03-17 19:06:28 作者: rapoo

请问动态链接库直接使用头文件包含和LoadLibrary载入在使用上有什么区别呀?
请问动态链接库直接使用头文件包含和LoadLibrary载入在使用上有什么区别呀?
另外请问,使用LoadLibrary动态加载编译的时候为什么不会出链接问题呢?
还有就是动态链接库本身都是使用时候动态加载的了,使用LoadLibrary有什么特别的好处吗?哪些情况下会用到呀?

[解决办法]
头文件包含
=========
楼主的这个意思是 用 lib载入的意思吧?
没有头文件包含的说法滴
lib 是dll的导入库,
这个方法很简单,
但是有2个缺点:
1 程序一开始运行就需要载入整个dll,无法载入程序就不能开始运行;
2 由于载入的是整个dll,需要耗费资源较多
[解决办法]
上面的方法,
也被称为 “dll静态加载法”

LoadLibrary载入,
是对应的 “动态加载”方式,
它不在程序运行时候载入dll,
不需要lib导入,
使用程序函数 LoadLibrary 载入库,
并使用 API 获得 dll 中的函数入口地址。

相对的,
它只导入需要的函数, 资源节俭,
程序启动无需载入 dll, 效率高,
即使dll没有,程序也可以正常启动(但是执行到需要dll部分就over了)

问题是,
它的操作方式比较麻烦,
从载入、获得函数入口、释放资源,全部需要手动控制。
[解决办法]
基本知识:

SDK编程笔记 - DLL篇
http://www.lihuasoft.net/article/show.php?id=759
[解决办法]
Windows动态链接库基础知识 :
http://topic.csdn.net/t/20051028/11/4356175.html
[解决办法]
(瞌睡虫星辰) ,给点机会,全让你说了。
[解决办法]
Windows的动态链接库原理
http://www.xingworld.net/show.html?root=2&branch=11&leaf=57&id=3462

这个从原理到例子,到应用,
都很清晰。
[解决办法]
虫子全说了

一种是编译期静态导入,一种是运行期动态加载。
后者灵活性高,但也相对麻烦点.



[解决办法]
帮顶,jf
[解决办法]
都说全了,至于要看书的话,windows核心编程里也有专门的章节介绍
[解决办法]
狒狒能连续3次以上发贴,牛比!
[解决办法]
LoadLibrary--运行时动态载入
上一个是相对来说滴--静态载入
[解决办法]
windows核心编程 bucuo
[解决办法]
编译期静态导入
运行期动态加载
[解决办法]
mark~
[解决办法]
动态加载DLL的步骤如下:
HINSTANCE DLL库实例名=LoadLibrary(_T( "DLL库名.dll "));//加载解密函数库
typedef BOOL (CALLBACK *函数类型名)(函数参数1,函数参数2...... );//定义函数类型,格式一
//typedef BOOL (__cdecl *函数类型名)(函数参数1,函数参数2...... );//定义函数类型,格式二,看原DLL函数的格式而定
函数类型名 使用时的函数名=(函数类型名)GetProcAddress(DLL库实例名,_T( "DLL库里的原函数名 "));//定义函数

最后要记得freelibrary。


静态加载DLL的步骤如下:

1(配置头文件路径):选择项目-> 属性-> C/C++-》常规-》附加包含目录:设置引用头文件路径
2(配置DLL和Lib文件路径):选择项目-> 属性-> 连接器-》常规-》附加库目录:设置DLL路径
3(加载Lib文件):选择项目-> 属性-> 连接器-》输入-》附加依赖项:输入要加载的Lib文件名(加载多个Lib文件时,以回车为分隔符)
4(该主应用程序.exe的生成目录,和要加载的DLL、Lib放在同一目录):选择项目-> 属性-> 连接器-》常规-》输出文件  


[解决办法]
mark
[解决办法]
什么年代的帖子了?谁翻出来的啊
[解决办法]
那么动态加载和静态加载生成的.exe文件在运行的时候占用内存的大小有没有区别呢?

读书人网 >C++

热点推荐