我想好多朋友在刚使用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 里链接参数不同。