在共享DLL中使用MFC 和 在静态库中使用MFC的区别 .

转载 2015年11月18日 16:55:24
使用VS2008,在项目属性中有一项MFC的使用,有三种设置:    
1.使用标准Windows库   
2.在共享DLL中使用MFC    
3.在静态库中使用MFC    
       第一种顾名思义。
       第二种指的是打包时一些MFC的DLL的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件。
       第三种是将DLL中的相关代码写进EXE文件中,文件较大,但是可以在没有相关DLL的机器上运行。    
       同时,如果程序本来是第二种方式,发给同事,在同事机器上运行时,可能会出现错误:   “无法启动程序……,由于应用程序配置不正确,未能启动此应用程序。”我觉得,在开发阶段的程序都选第3种比较好吧,不用管大小以及效率,等后期打包的时候用spy等其他工具都可以,来侦测DLL等就行了。(http://blog.csdn.net/xiexievv/article/details/6314874)

       "在共享DLL中使用MFC"指的是打包时一些MFC的DLL的内容没有被硬编码到在EXE文件中,所以EXE会文件较小,但是运行时要求运行的系统环境中要有相关的DLL文件.

     "在静态库中使用MFC"是将DLL对应的lib静态库中的相关代码硬编码到EXE文件中,文件较大,但是可以在没有已经被包含DLL的机器上运行,当然即使如此也并非所有的DLL都会将其硬编码到Exe中,因此仍然某些DLL是必须的.比如Redistributable Package中的某些DLL.

      静态库中编译出来的可执行文件拿到其它机器上也可以运行,共享DLL中编译出来的可执行文件在本机上可以执行,若拿到其它机器上就需要相应的动态库支持。

     另外,共享DLL下的工程大小会稍小一些,但是在另一台机器上运行时务必保证那一台机器上有动态库支持。

在共享DLL中使用MFC与在静态库中使用MFC的区别

在共享DLL中使用MFC与在静态库中使用MFC的区别         "在共享DLL中使用MFC"指的是打包时一些MFC的DLL的内容没有被硬编码到在EXE文件中,所...
  • xiong452980729
  • xiong452980729
  • 2016年03月12日 10:21
  • 367

MFC在共享DLL中使用和在静态库中使用的一些问题

在项目的配置属性中配置“MFC的使用”时,将会有两个选项:“在共享 DLL中使用  MFC”和“静态库中使用  MFC”。     “在共享DLL中使用MFC”指的是在打包时一些MFC的DLL的内容没...
  • wang_wenshuai
  • wang_wenshuai
  • 2014年01月16日 19:11
  • 2918

MFC在共享DLL中使用转换为静态库中使用的一些问题

在项目的配置属性中配置“MFC的使用”时,将会有两个选项:“在共享 DLL中使用  MFC”和“静态库中使用  MFC”。     “在共享DLL中使用MFC”指的是在打包时一些MFC的DLL的内容...
  • qing666888
  • qing666888
  • 2017年09月09日 17:39
  • 246

MFC的使用——在共享DLL中使用MFC、在静态库中使用MFC

前言我们在使用Microsoft Visual Studio软件(也就是我们常常说的VS)时,其中项目属性中有一项叫做“MFC的使用”,里面包含有不同的设置,会影响我们所编写的程序的使用,今天我就遇到...
  • shihengzhen101
  • shihengzhen101
  • 2016年10月17日 14:17
  • 4705

静态库中使用MFC编译出现错误,共享DLL使用则正常的解决方案

没有忽略任何LIB了,只是 在Preprocessor中定义_AFXDLL, PROJECT->SETING->C/C++->PREPROCESSOR->定义 _AFXDLL,完毕。 如果它提示:f...
  • educast
  • educast
  • 2013年08月09日 16:40
  • 2070

使用MFC作为共享的DLL 与 使用MFC作为静态链接库的区别

VC工程-设置里的使用MFC作为共享的DLL ,使用MFC作为静态链接库 二者有何区别,各有什么好处?? 而且用MFC开发的程序里如果用到了其它的动态库,就要加载这些动态库,分为动态加载和静态加载,...
  • brk1985
  • brk1985
  • 2014年01月03日 10:07
  • 814

VS2015在共享 DLL 中使用 MFC 发布细节 同时支持XP

1.项目属性平台工具集选 2.到vs2015安装目录下负责依赖的dll,因为新版vc启用了新的c/c++运行时,xp版本没有发布对应的补丁,所以需要自己复制进去安装目录。 这里要兼容32位故只需...
  • yeshiqimu
  • yeshiqimu
  • 2016年11月16日 10:30
  • 2025

vs2008中的MFC用共享DLL和静态中使用MFC,遇到的问题

最近调试一个项目,VS2008的MFC系统,里面用到了很多开源(后面调试问题时以为是开源库的问题,其实没有关系)。 问题是这样的,系统在我机器上用vs2008编译好运行正常,然后移到另外一个没有装VS...
  • aspzhenshuai
  • aspzhenshuai
  • 2015年02月10日 13:37
  • 914

MFC程序(在静态库中使用MFC)问题

基本知识: 在项目的配置属性中配置“MFC的使用”时,选项的区别:如果选择"在共享 DLL中使用 MFC"的话,编译后的程序中不包含MFC库,所以文件会比较小,但是如果程序直接移到一个没有安装过...
  • lejun2011
  • lejun2011
  • 2012年10月26日 15:08
  • 10151

VS2013中编译项目在静态库中使用MFC出现错误的解决方法

前言由于需要将VS2013环境下编译的程序考给没有安装VS2013环境的电脑中使用,解决方式有3种,colorfulpieces博客中有介绍。 1. 采用静态编译 2. 将mfc100.dll和应...
  • wokaowokaowokao12345
  • wokaowokaowokao12345
  • 2016年03月25日 17:21
  • 2546
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在共享DLL中使用MFC 和 在静态库中使用MFC的区别 .
举报原因:
原因补充:

(最多只允许输入30个字)