MFC作为结果静态的DLL与作为共享的DLL的区别

来源:互联网 发布:滚动字幕制作软件 编辑:程序博客网 时间:2024/05/17 22:48

MFC作为结果静态的DLL与作为共享的DLL的区别

VC控件编程学习 2011-03-14 22:20:57 阅读6 评论0   字号: 订阅

共享DLL, EXE小,但是如果系统中没有这个DLL,就无法运行。
静态链接,是把代码链接到EXE中,EXE大,但是不依赖那个DLL了。

每个进程载入的 MFC 静态的库不能超过 64 个,且 size 比较大;
动态链接的缺点是安装发布的时候必须带 MFC42/MSVCRT 等,优点是没有这个 64 的限制。

静态链接,将DLL库的内容,直接添加到生成的EXE中,并作为EXE文件的一个静态部分运行。作为静态链接,你不需要担心运行时需要的相关库文件,因为都链接到EXE文件中了。
动态链接,生成的EXE文件,公包括EXE内部的内容,运行时,根据需要,加载相应的DLL。作为动态链接,你需要将运行时相关的DLL库文件放到相关的地方(1、与EXE同文件夹;2、系统环境变量Path指定的其它路径)。

关于内存访问,使用静态链接,在DLL中动态分配(new)的内存,只能由DLL回收(delete),强制EXE回收可能会有异想不到的结果。动态链接,在DLL里动态分配(new)的内在,可由EXE回收(delete)。
文献来源:http://lyzh0703.blog.163.com/blog/static/1154716312011214102057809/