win32 Application 与 win32 console application 有什么区别?

本文探讨了Win32Application与Win32ConsoleApplication之间的差异,前者为典型的Windows图形用户界面程序,支持鼠标操作;后者为类似MS-DOS的命令行界面程序,主要通过键盘输入命令进行交互。

有以下几种说法:

百度知道:

后者是 控制台应用程序...
就像在DOS中, 用键盘输入命令.
前者是 窗口的应用程序.
就像在WINDOWS中, 用鼠标控制程序

其他:

Win32 Application和Win32 Console Application区别
2007-08-04 15:22

Win32 Application和Win32 Console Application
都是工作在32位Windows环境的程序。

其中Win32 Application
就是普通的常见的窗口应用程序,当然有的界面做得比较个性化,比如圆形的、不规则形状的……
它们都是所谓的GUI(Graphics User Interface图形用户接口),我们可以通过鼠标点击来完成控制。


Win32 Console Application(win32控制台应用程序)
往往是像MS-DOS窗口(XP中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它;
或者叫CUI(Character User Interface字符用户接口)。

 

 

Win32 Application和Win32 console Application的区别
2007-12-04 16:44

Win32        application        是基于WINDOWS平台的32位开发环境开发应用程序,SDK程序。
Win32        Console        application        是基于DOS开发平台开发应用程序,不能使用与图形有关的函数,控制台程序。

1.EXE文件本身有区别:在文件头里(PE头)有一个标记表明该文件是Application还是Console

2.OS在创建对应的进程时,如果是Console,除了载入文件映像并开启进程外(这一点和Application相同),同时创建一个Console对象(就是那个黑黑的窗口)与之关联,而且这种关联是可以编程脱开的.

除此以外,就没什么区别了,在Console程序里调用相应的API也可以创建窗口,对话框什么的

 

很多VC初学者可能会常遇到如下链接错误:
Linking... /subsystem:windows
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16

Debug/TestWin.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

解决方法是:将project-settings-link的project options里的

/subsystem:windows
改成
/subsystem:console

原因:Win32 Application的入口函数为WinMain
Win32 Console Application的入口函数是main

换句话说,如果你编写传统的C程序,必须建立Win32 Console程序,但VC里面默认的是Win32 Application,于是上面提及的链接错误就就经常出现了
而Win32 Application和Win32 Console的区别就在于VC里链接参数不同

 

 

Win32 application 与 win32 console application 有什么区别?

楼主glgod(gl) 2001-02-24 00:13:00 在 VC/MFC / 基础 类 提问

为什么我用win32   console   application   编窗口(基本窗口,main   ()   加消息循环)时会出现以下错误  
  Linking...  
  LIBCD.lib(crt0.obj)   :   error   LNK2001:   unresolved   external   symbol   _main  
  Debug/11.exe   :   fatal   error   LNK1120:   1   unresolved   externals  
  Error   executing   link.exe.  
  而用Win32   application   时不会?   问题 点数:50、回复次数:3Top

1 楼zhq2000(方舟)回复于 2001-02-24 00:37:00 得分 20

Win32   Application   是标准   windows   程序   ,   GUI接口   ,完全拥有windows的特性!  
  Win32   console   application   类似于   DOS   程序   ,不过提供了访问windows 系统 API的能力!Top

2 楼In355Hz(好象一条狗)回复于 2001-02-24 02:20:00 得分 20

关键在于,一个的入口点WinMain,而另一个是main()  
  编译时,编译器总是寻找相应的函数来链接Top

3 楼wslee(wslee)回复于 2001-02-24 06:20:00 得分 10

前边两位都讲得很对,虽然   win32   console   application   的运行界面貌似   dos,   但他只是   windows   底下的虚拟 模式 ,并不是真正意义下的   dos,   在   win32   console   application   中,   很多   MFC   都是非法的

 

 

 


在 Visual Studio 中创建一个新的 **Win32 Console Application**(即传统的 Win32 控制台应用程序)是使用 C/C++ 进行 Windows 原生开发的常见起点。以下是详细的步骤说明,适用于较新版本的 Visual Studio(如 VS 2019 或 VS 2022),并附带示例代码。 --- ### ✅ 步骤:使用 Visual Studio 创建 Win32 Console Application #### 1. 打开 Visual Studio 启动你的 Visual Studio IDE。 #### 2. 创建新项目 - 点击 **“创建新项目”** - 在搜索框中输入 `console`,选择模板: > **Console App (.NET Framework)** ❌(这不是我们要的) > > ✅ 正确的是:**Console Application (Windows Desktop)** 或 > **Win32 Console Application** > ⚠️ 注意:如果你没有看到 "Win32 Console Application" 模板,请确保你安装了 **“Desktop development with C++”** 工作负载。 ##### 如果未安装 C++ 支持: - 转到菜单:**工具 → 获取工具功能** - 安装工作负载:✅ **Desktop development with C++** #### 3. 新建 Win32 控制台项目 - 选择模板:**Win32 Console Application** - 点击“下一步” - 输入项目名称(例如:`MyWin32App`) - 设置位置 → 点击“创建” #### 4. 配置项目向导 点击“创建”后会弹出 **Win32 应用程序向导**: - 点击“下一步” - 在“应用程序设置”中: - 应用程序类型:✅ **控制台应用程序 (Console application)** - 附加选项:✅ **预编译头(Precompiled header)**(可选,建议初学者勾选以提高编译速度) - 取消勾选“安全开发生命周期 (SDL) checks”(可选,避免额外警告) - 点击“完成” Visual Studio 将自动生成基础代码结构。 --- ### 📜 自动生成的代码示例(C++) ```cpp // MyWin32App.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include "pch.h" // 使用预编译头(如果启用) #include <iostream> int main() { std::cout << "Hello, Win32 Console World!\n"; return 0; } ``` > 🔍 解释: > - `#include "pch.h"` 是预编译头文件,在项目启用“预编译头”时需要保留。 > - `<iostream>` 提供输入输出流支持。 > - `std::cout` 输出字符串到控制台。 > - `main()` 是程序入口点。 --- ### 🧪 编译运行 - 按下 **Ctrl + F5**(直接运行,不调试)或 **F5**(调试运行) - 控制台窗口将显示: ``` Hello, Win32 Console World! ``` --- ### 💡 补充说明:Win32 Console vs 标准 C++ Console - “Win32 Console Application” 并不是指必须写 Windows API; - 它只是一个基于 Win32 子系统的控制台程序模板,允许你后续调用 Windows API(如 `MessageBox`, `CreateFile` 等)。 - 若只写标准 C++ 代码(如 `cout`, `cin`),它普通控制台程序无异。 如果你想混合使用 Windows API,可以这样扩展: #### 示例:结合 Windows API 弹窗 + 控制台输出 ```cpp #include "pch.h" #include <iostream> #include <windows.h> int main() { std::cout << "这是一个 Win32 控制台程序!\n"; // 调用 Windows API 显示消息框 MessageBoxA(NULL, "你好,Windows API!", "提示", MB_OK | MB_ICONINFORMATION); return 0; } ``` > ✅ 这体现了 Win32 控制台项目的灵活性:既能操作控制台,也能调用原生 Windows 功能。 --- ### ❓ 常见问题排查 | 问题 | 解决方法 | |------|---------| | `fatal error C1083: Cannot open include file: 'pch.h': No such file or directory` | 删除 `#include "pch.h"` 或关闭预编译头(项目属性 → C/C++ → 预编译头 → 不使用预编译头) | | 项目无法生成 | 确保选择了正确的平台(x86/x64)配置(Debug/Release) | | 中文乱码 | 在源码中添加 `setlocale(LC_ALL, "");` 或保存为 UTF-8 with BOM 编码 | --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值