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

原文:http://blog.csdn.net/zhongguoren666/article/details/8187207

http://blog.csdn.net/chence19871/article/details/38339457

在共享DLL中使用MFC 和在静态库中使用MFC的区别的更多相关文章

  1. MFC的使用——在共享DLL中使用MFC、在静态库中使用MFC(转)

    原文转自 https://blog.csdn.net/albertsh/article/details/52838419 1.使用标准Windows库 使用WINDOWS SDK API库,不使用MF ...

  2. 1、c#中可以有静态构造方法,而java中没有,例如在单例模式中c#可以直接在静态构造中实例化对象,而java不可以

    1.c#中可以有静态构造方法,而java中没有,例如在单例模式中c#可以直接在静态构造中实例化对象,而java不可以

  3. 如何让静态库中的可执行程序不调用的函数不链接进该可执行程序?(-ffunction-sections -Wl,--gc-sections)

    关键词: -Wl,--gc-sections   -ffunction-sections  链接  elf   库 有时我们会遇到这种情况,可执行程序需要链接一些静态库,但是静态库中的函数并没有全部使 ...

  4. iOS 静态库中使用宏定义区分iPhone模拟器与真机---备用

    问题描述 一般项目中,可以使用宏定义来判断模拟器还是真机,这无疑是有效的. #if TARGET_IPHONE_SIMULATOR #define SIMULATOR 1 #elif TARGET_O ...

  5. linux C 刚初始化后的一个变量在调用一个静态库中函数后被异常修改为乱码

    linux C 中声明并初始化一个变量const char a[512]="test";后,接着调用了一个静态库中的函数函数test(b);,a并没有传入test函数,但在调用这个 ...

  6. NSClassFromString 实例话静态库中的类

    Class myClass = NSClassFromString("StaticLibyClassName"); StaticLibyClassName是从静态库中实例化一个Cl ...

  7. plist文件无法打包进.a静态库中

    问题: 之前一直在做静态库的编写与维护,也一直知道静态库的图片资源是没办法打进.a中的.可是突然有个想法.由于有非常多參数的配置是在一个plist文件里的.尽管也知道这是一个plist文件,可是想想和 ...

  8. 在DLL中导出另一静态库中的函数

    开发环境: win7_x64.VS2013 应用场景: 动态库A依赖动态库B,而动态库B又使用了静态库C:有些情况下,我们需要将C从B里面导出,然后提供给A使用. 正文: Step1: 1.新建测试静 ...

  9. C++静态库中使用_declspec(dllexport) 不能导出函数的问题

    在某项目中,有一些静态库,这些静态库中有类型命名的函数GET_XXX.在一次项目结构调整的时候,我想将调用这静态库的代码编译成DLL,并且将这些Get函数导出,我就直接就这些函数前面添加了_decls ...

随机推荐

  1. Strange fuction--hdu2899

    Strange fuction Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  2. mini-httpd源码分析-mini-httpd.c

    main函数分析: 一,参数设置: 读取命令行参数 配置文件参数 读取参数,设置对应的全局变量.主要参数有:配置文件:资源目录:进程ID文件:日志文件:字符集:主机名及端口号... 二,参数处理:重点 ...

  3. gdal读写图像分块处理(精华版)

    一.gdal进行数据操作在安装好gdal后,即可调用gdal库中的函数.(需要包含的头文件:gdal_priv.h)1.打开数据集使用gdal库进行数据(影像)操作的第一步就是打开一个数据集.对于“数 ...

  4. webview相关链接

    http://tech.it168.com/a2011/0517/1191/000001191561_2.shtml http://www.eoeandroid.com/thread-272495-1 ...

  5. 何謂COB (Chip On Board) ?介紹COB的演進歷史

    COB (Chip On Board)在電子製造業已經是一項成熟的技術了,可是一般的組裝工廠對它的製程並不熟悉,也許是因為它使用到一些 wire bond 的積體電路(IC)封裝技術,所以很多的成品或 ...

  6. Ubuntu下Eclipse搭建ARM开发环境

    第一步:安装JRE 和 Eclipse 详细步骤请参考:http://blog.csdn.net/ex_net/article/details/7251664 第二步:安装arm-linux-gcc ...

  7. 为何visua studio看不到C++项目的LOG?

    最近工程中添加了一个用C++编写的项目 它作为了我正式使用项目的引用 但是当我debug的时候 居然没有看到应该有的LOG 最后找到了解决方法,如下图所示: 右击你的正式项目,属性 改变调试器类型中的 ...

  8. Android 绘图工具库AChartEngine

    From: http://www.oschina.net/p/achartengine AChartEngine是为android应用而设计的绘图工具库.目前该库的最新稳定版本是0.7,支持绘制以下类 ...

  9. GIS 相关知识扫盲

    1.什么是GIS GIS:地理信息系统,它是一种特定的十分重要的空间信息系统.它是在计算机硬.软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集.储存.管理.运算.分析 ...

  10. SVN连接不上

    某次我们部门换了场地.SVNserver就连接不上了,后来公司数据中心处理好后,还是连接不上,原来还需刷新自己电脑的DNS. 如需转载,请注明出处http://blog.csdn.net/combat ...