在共享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下的工程大小会稍小一些,但是在另一台机器上运行时务必保证那一台机器上有动态库支持。

相关文章推荐

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

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

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

前言由于需要将VS2013环境下编译的程序考给没有安装VS2013环境的电脑中使用,解决方式有3种,colorfulpieces博客中有介绍。 1. 采用静态编译 2. 将mfc100.dll和应...

MFC、共享库、静态库

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

C/C++(2)VS2015生成并使用自定义动态库dll/静态库lib

动态库:1.新建win32控制台应用程序DLLTEST,选中DLL(D)、预编译头(P)、导出符号(X)、自动生成了如下文件: //DLLTEST.h文件 // 下列 ifdef 块是创建使从 ...

MFC的秘密:它的静态库和动态库所在何处

1.Dependency Walker的第一道揭秘 在MFC中我们写过很多静态库和动态库。这些dll都依赖于MFC;然后我们又交给别人使用,使得它们被依赖。 细想一下,就可能会发现其中的不平衡。我们生...

静态库和动态库的区别,lib文件和dll文件的配置方法

一、静态库和动态库1、静态库(.lib) 函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用...

静态库和动态库的区别,lib文件和dll文件的配置方法

一、静态库和动态库 1、静态库(.lib)     函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和...

iOS中的静态库与动态库,区别、制作和使用

如果我们有些功能要给别人用,但是又不想公开代码实现,比如高德地图、第三方登录分享等等,这时候我们就要打包成库了。库分静态库和动态库两种: 静态库:以.a 和 .framework为文件后缀名...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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