我想好多朋友在刚使用vc++6.0 创建工程时不知道是选Win32 Application 或是选Win32 console Application ,有的就选择了 Win32 Application ,然而在编译时会出现下面的错误提示:
怎么回事呢?程序没有错误,但怎么会提示错误了呢?后来才知道了是因为Win32 Application 和Win32 Console Application 选项的问题。搜索到了下面的资料,转到这里:
Win32 Application 和 Win32 Console Application 都是工作在 32 位 Windows 环境的程序。其中:
( 1 ) Win32 Application 就是普通的常见的窗口应用程序,当然有的界面做得比较个性化,比如圆形的、不规则形状的… 它们都是所谓的 GUI(Graphics User Interface 图形用户接口 ) ,我们可以通过鼠标点击来完成控制。 Win32 Application 是为你开发 windows 应用程序所准备的,程序以 WinMain() 为入口, #include<windows.h> ,能够使用 win32 API 函数。
( 2 )而 Win32 Console Application ( win32 控制台应用程序)往往是像 MS-DOS 窗口( XP 中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它,它与纯 dos 程序区别是:它是 32 位的;或者叫 CUI(Character User Interface 字符用户接口 ) 。 console 程序以 main() 为入口,不能使用 win32 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 里链接参数不同。