控制台应用程序vs dll与Windows应用程序等

时间:2014-04-01 19:26:20

标签: c++

当我在Visual Studio中启动一个新项目时,我有几个选项可供选择:Windows应用程序,控制台应用程序,DLL,静态库。究竟有什么不同之处,何时应该使用哪种? (对不起,如果这是一个愚蠢的问题,我是C ++的新手。)先谢谢。

3 个答案:

答案 0 :(得分:7)

  • 控制台应用程序。
    使用控制台子系统创建可执行程序([.exe]文件)。这意味着每个正在运行的程序实例都将配备一个关联的控制台窗口。无论是现有的还是新的。

  • Windows应用程序。
    使用控制台或GUI子系统创建可执行程序。 GUI子系统是默认的。与控制台子系统的区别在于(仅)在运行程序时不会自动创建控制台窗口。

  • 静态库。
    这是一种库,其中某些应用程序使用的代码被复制到该应用程序的可执行文件中。

  • DLL。
    动态链接库。这是一种库,其代码不会使用可执行文件复制到每个库中。而是将代码动态地放入每个运行实例的内存中。由于此功能,可以在许多程序之间共享单个DLL文件。另一个特性是DLL中的代码可以是私有的,并使用自己的运行时库。

在项目创建完成后,可以在项目属性中轻松更改控制台与GUI子系统。

静态库与DLL在创建后无法真正切换。

请注意,使用GUI子系统Microsoft的链接器(与GCC工具链链接器不同)默认情况下不接受标准main。要强制它接受标准,请在链接器设置中指定入口点 mainCRTStartup。使用标准项目模板时,必须在项目创建后完成。

此外,如果您需要标准行为,那么最好在项目创建向导中关闭预编译标题。项目创建后也可以关闭。但是在创作时已经做到最简单也最麻烦。

答案 1 :(得分:2)

  • Windows应用程序项目使用图形用户界面和操作系统消息处理创建应用程序。
  • 控制台应用程序完全基于文本并在控制台窗口中执行。它是最简单的应用程序形式,并在许多教程中用于解释基本语言功能。
  • 静态库和DLL无法自行执行。但它们提供了可供其他程序使用的功能。静态库和DLL之间的区别在于,当程序使用它们时,静态库被复制到可执行文件中,而DLL文件是一个单独的文件。

答案 2 :(得分:0)

控制台应用程序将在控制台窗口(CMD)中运行,仅用于快速简单的应用程序。 Windows应用程序将是使用“windows.h”头文件的基于GUI的应用程序。它还带有一个窗口模板。 dll静态库用于创建DLL。阅读What is a DLL from the Microsoft Support