代码改变世界

VS2008中的各种工程及debug&release发布版本

2011-05-06 10:00  sensensen  阅读(648)  评论(0编辑  收藏  举报

  

之前用了太长时间的VC6.0,在VC6.0下使用了MFC,控件等等,也自以为自己什么都知道,是懂的。可是面试了那么一两次之后才发现,其实很多基础原理、道理性的东西,自己都很缺失,难道就只做一个底层的coder,所以,决定了要把这些都弄清楚。GO LALA GO~~

在vs中创建“win32 project”时,在创建向导的第二步可对“application type”进行配置。如下图所示:

可设置为四种类型之一:

    windows application为windows应用程序,多用于设计图形界面,在新建项目对话框中选择“win32 project”时,应用类型则默认为“windows application”;运行结果是如下的,可以再添加:

   “console application”即为控制台程序,是指运行时有DOS窗口的;

这里选择了哪一种类型的项目后,可以勾选empty选项,这样,头文件等等就不会自动的给你包含进去,完全自我创建main()等(它自动生成的是_tmain()虽然是一样的)对于初学者,可以自己从头创建新工程,加新文件。

    动态链接库“DLL”,可用于创建自己的动态链接库;

    以及静态库“Static librar”,用于创建静态库,如设计自己的类库,以供应用程序使用。

一个项目的应用类型可在新建时根据项目的应用目标进行配置。

然而当我们要使用一个已经存在的项目,当需要对项目应用类型进行改变时,可通过项目属性页进行配置。

方法是:

 项目->属性->配置属性->General->Configuration Type ,选择需要的类型即可。

当选择application(.exe)时,可通过,工程->属性->linker->system->SubSuytem;在应用程序和控制台程序中相互转换。
画了中线的话,是因为转自别人的博客,但是自己尝试了不行,总是出错:

Error 1 error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup MSVCRTD.lib test2
Error 2 fatal error LNK1120: 1 unresolved externals D:\2011\C++programing\myproject\test\test2\Debug\test2.exe test2
如果有人知道原因解决了的话,麻烦给我留言哈~

参考文献:

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/monicangl/archive/2010/12/14/6076125.aspx

最上面的图中,MFC Application是会用的了,其他的如ATL,CLR,Test都没有使用过。

然后是C#中的项目,有一部分知道是.net的,没有用过。Visual C#下windows,Console application应该是和控制台一致的,只是C#版本的。windows forms application则类似MFC,可以用Picturebox之类的。class library应该是不能运行的类库。

好啦,就写到这里,好像自己也明白了一些了~~

下面说说发布版本:

debug和release的不同只在于项目链接时使用的运行时库不同。

通过项目->属性->C/C++->Code Generation->Runtime Library进行配置。

这里有四种项目链接运行时库,分为动、静态下的调试和非调试模式。

/MT:多线程静态版本,定义 _MT

/MTd:多线程静态调试版本(DEBUG) ,定义 _DEBUG 和 _MT
/MD:多线程动态链接(DLL ),定义 _MT 和 _DLL
/MDd多线程动态调试版本(DLL)(DEBUG),定义 _DEBUG、_MT 和 _DLL

/MTd、/MDd对应调试模式的动态和静态链接模式;

/MT、/MT对应发布模式的动态和静态链接模式;

关于四种项目链接运行时库的详细介绍可看msdn的

/MD、/MT、/LD(使用运行时库)

可结合看LNK4098了解各种模式下所使用的运行时库和需要忽视的运行时库

好吧,就先写到这,以后碰到了问题再来解决~