写了个最简单的程序,生成一个窗口,代码如下:#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="窗口";
char lpszTitle[]="My_Windows"; wndclass.style=0;
wndclass.lpfnWndProc=WndProc;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=lpszClassName; if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE;
} hwnd=CreateWindow(
lpszClassName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
); ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}}LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
  PostQuitMessage(0);
default:
      return DefWindowProc(hwnd,message,wParam,lParam);   
}
 return 0;
}在VC 6.0下已经通过了编译,但是链接的时候出现了错误
--------------------Configuration: windows - Win32 Debug--------------------
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/windows.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.windows.exe - 2 error(s), 0 warning(s)请教大虾什么原因?还有,我这个可以叫做win32 SDK编程吗?还是叫做win32 API编程?

解决方案 »

  1.   

    你应该建立一个Win32的工程,而不是一个Win32控制台工程。他们的入口函数是不一样的!
      

  2.   

    是win32 SDK
    win32 API是调用API函数
      

  3.   

    你可以这么修改:
    Project->Setting->Link
    /subsystem:windows===>/subsystem:console
    删除 Project->Setting->Link 里的这个:
    /subsystem:windows 或者 /subsystem:console
    当使用Microsoft Visual C++来创建应用程序时,这种集成式环境安装了许多不同的链接程
    序开关,这样,链接程序就可以将相应的子系统嵌入产生的可执行程序。用于C U I应用程序的
    链接程序开关是/SUBSYSTEM:CONCOLE,而用于GUI 应用程序的链接程序开关是
    /SUBSYSTEM:WINDOWS。
    链接程序负责在它连接可执行文件时选择相应的C/C++运行期启动函数。如果设定了
    /SUBSYSTEM:WINDOWS链接程序开关,那么该链接程序期望找到一个WinMain或wWinmain函数。如果这两个函数都不存在,链接程序便返回一个“未转换的外部符号”的错误消息。否则,它可以分别选择WinMainCRTStartup函数或wWinMainCRTStartup函数。
    同样,如果设定了/SUBSYSTEM:CONSOLE链接程序开关,那么该链接程序便期望找到main或wmain函数,并且可以分别选择mainCRTStartup函数或wmainCRTStartup函数。同样,如果main或wmain都不存在,那么链接程序返回一条“未转换外部符号”的消息。
        可以从应用程序中全部删除/SUBSYSTEM链接程序开关。当这样做的时候,链接程序能够自动确定应用程序应该连接到哪个子系统。当进行链接时,链接程序要查看代码中存在4个函数(WinMain、wWinMain、main或wmain)中的哪一个。然后确定可执行程序应该是哪一个子系统,并且确定可执行程序中应该嵌入哪个C/C++启动函数。
      

  4.   

    你建的工程类型是什么,是console的吗如果不是,新建一个win32 application的工程,Visual C++6.0:File-->new-->Projects-->Win32 Application(project name)-->...... 然后,就选第二项......名字我忘记了然后把这些代码再拷过去,重新运行
      

  5.   

    或者
    Project->Setting->Link/subsystem:console
    ===>
    /subsystem:windows
      

  6.   

    上面的只是一段说明,有点乱,你仔细看看就可以了!WinMain函数是GUI程序的入口函数!!!
      

  7.   

    新建一个win32 application的工程
      

  8.   

    请问win32 application 和 win32 console application有什么区别?
      

  9.   

    有一个区别就是函数的入口点不同
    win32 application 是winmainwin32 console application  是main,所以,你这个程序如果用win32 console application,就会找不到入口点了,没有main阿