用MFC作为共享的DLL和作为静态链接库有什么区别解决方法

用MFC作为共享的DLL和作为静态链接库有什么区别
Release设置为静态的,生成的exe文件比 
Debug设置为共享的DLL生成的exe还要大

------解决方案--------------------
共享DLL, EXE小,但是如果系统中没有这个DLL,就无法运行。

 静态链接,是把代码链接到EXE中,EXE大,但是不依赖那个DLL了。
------解决方案--------------------
没有安装vc的机器也能运行静态链接的,如果动态链接你还要带着一个mfcxxx.dll才能在没有vc的机器上运行
------解决方案--------------------
每个进程载入的 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)。