控制台应用程序 vs DLL vs Windows 应用程序等

3

当我在 Visual Studio 中启动一个新项目时,我有几个选项可供选择:Windows 应用程序、控制台应用程序、dll、静态库。它们之间到底有什么区别,在什么情况下应该选择哪个呢?(抱歉如果这是个愚蠢的问题,我是 C++ 新手。)感谢您提前的回答!


一个Windows应用程序将作为Windows窗口启动应用程序,而控制台应用程序则限于控制台/终端。如果你是C++的新手,你现在不需要学习关于DLL和静态库的知识。你应该只是暂时坚持使用控制台应用程序。 - Mdev
为什么你们这些挑剔的人要限制这些类型的问题?即使只是打印“Hello World”,Visual Studio也会给你很多选项,这是有效的。想象一下向一个盲人描述颜色,对他来说颜色很复杂,但对任何有眼睛的人来说,颜色都是显而易见的事情——这也是如此,但让我们不要阻止盲人学习! - BigH
3个回答

7
  • 控制台应用程序。
    创建一个带有控制台子系统的可执行程序([.exe]文件)。这意味着每个运行的程序实例将配备一个关联的控制台窗口,可以是现有的或新的。

  • Windows应用程序。
    创建一个带有控制台或GUI子系统的可执行程序。GUI子系统是默认设置。与控制台子系统的不同之处在于(仅仅是)程序运行时不会自动创建控制台窗口。

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

  • DLL。
    动态链接库。这是一种库,其代码没有被复制到每个使用可执行文件中。相反,该代码会被动态地放置到每个正在运行的实例的内存中。由于这个特性,单个DLL文件可以在多个程序之间共享。另一个特点是,DLL中的代码可以真正私有并使用它自己的运行时库。

在项目创建后可以非常容易地在项目属性中更改控制台和GUI子系统。

静态库与DLL在创建后不能轻松切换。

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

此外,如果您想要标准行为,那么最好在项目创建向导中关闭预编译头。也可以在项目创建后关闭。但最简单和最不麻烦的方法是在创建时就关闭。


谢谢,这解释了很多 :)! - user3482499

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

一个控制台应用程序并不完全基于文本。我尝试过的所有GUI或图形库或框架都是由Visual Studio IDE所称的“控制台应用程序”使用的。它只是默认为纯文本输入/输出。 - Christian Hackl

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接