解决方案 »
- 使用MFC中的CAsyncSocket类和直接使用API套接字通信哪个更好?
- 请教:怎样用wininet获取到一个网页的真实的URL地址?
- 如何把本机当前播放的音乐做为MIC的输入数据,传到对端??
- 如何从注册表中取得给出关键字的路径?(急)
- vc++数据库编程中怎样打印
- activex的下载安装问题
- 郁闷啊!关于MDI中动态修改菜单的问题,折腾了一天,也没弄明白,高手指教!
- 如何把BMP装化成JPG,程序内部实现,我给100分
- 怎么实现 unsigned short *的转换?
- 用ATL做的dll怎样返回字符串数组类型,请高手给个例子指点
- CHtmlView禁止滚动条的代码无效
- CMFCTabCtrl如何截获点击关闭选项卡按钮的消息,求助
2.动态库的.lib是描述DLL中程序函数偏移位置等函数信息,所以运行时需要DLL的支持。
使用静态库编译的程序比使用动态库编译的程序要大。
3.要和动态加载DLL和静态加载DLL概念区分开,静态加载DLL是用2方式实现的,动态加载DLL是用API(LoadLibrary,GetProcAddress和FreeLibrary)来实现的。
动态库的.lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,运行时候需要相应的dll文件支持.
动态库的lib是对实现部分(.dll文件)的声明,.h是编译器的声明,动态库的lib是编译器LINK时候的声明。
MFC是有静态lib和动态lib,用静态lib方便编译出来的程序不依赖MFC的DLL,但程序的个头会比较大。
动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入。不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例,规避了空间浪费问题。动态库在程序运行是才被载入,也解决了静态库对程序的更新、部署和发布页会带来麻烦。用户只需要更新动态库即可,增量更新。
关于动态链接库,为什么隐式调用不需要.lib文件,而动态调用需要.lib文件呢?
2.动态库也有显示加载和隐式,显示的会运行时加载,隐式的是exe已启动就加载,不过隐式也可以设置delayload来调用的时候加载
3.dll入口函数是加载是的时候调用的,静态库是直接link进exe了,相当于代码重用。