错误是
--------------------Configuration: Simwin - Win32 Debug--------------------
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/Simwin.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.我写的源码为
//////// Simpwin.h ///////////////
LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);
BOOL InitApplication(HINSTANCE);
BOOL InitInstance(HINSTANCE,int);
char *hello="HELLO WORLD";
/////////////////////////////////////////////Simpwin.cpp /////////////#include<windows.h>
#include"Simpwin.h"
#include<string.h>HINSTANCE hInst;
HWND hWndMain;int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg; if(!InitApplication(hInstance))
return (FALSE); if(!InitInstance(hInstance,nCmdShow))
return (FALSE); while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
BOOL InitApplication(HINSTANCE hInstance)
{
WNDCLASS wcSimpwin; wcSimpwin.style=CS_HREDRAW | CS_VREDRAW;
wcSimpwin.lpfnWndProc =(WNDPROC) MainWndProc;
wcSimpwin.cbClsExtra =0;
wcSimpwin.cbWndExtra =0;
wcSimpwin.hInstance =hInstance;
wcSimpwin.hIcon =LoadCursor(NULL,IDI_APPLICATION);
wcSimpwin.hCursor =LoadCursor(NULL,IDC_ARROW);
wcSimpwin.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wcSimpwin.lpszMenuName =NULL;
wcSimpwin.lpszClassName="SimpwinWClass"; return (RegisterClass(&wcSimpwin));
}BOOL InitInstance(HINSTANCE hInstance,
int nCmdShow)
{
hInst=hInstance; hWndMain=CreateWindow(
"SimpwinWClass",
"ÎҵĴ°¿Ú",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL); if(!hWndMain)
return (FALSE); ShowWindow(hWndMain,nCmdShow);
UpdateWindow(hWndMain); return (TRUE);
}LRESULT CALLBACK MainWndProc(HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps; switch (message)
{
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
TextOut(hdc,20,10,hello,lstrlen(hello));
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd,message,wParam,lParam));
}
return (0);
}
/////////////////////////////////////
--------------------Configuration: Simwin - Win32 Debug--------------------
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/Simwin.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.我写的源码为
//////// Simpwin.h ///////////////
LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);
BOOL InitApplication(HINSTANCE);
BOOL InitInstance(HINSTANCE,int);
char *hello="HELLO WORLD";
/////////////////////////////////////////////Simpwin.cpp /////////////#include<windows.h>
#include"Simpwin.h"
#include<string.h>HINSTANCE hInst;
HWND hWndMain;int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg; if(!InitApplication(hInstance))
return (FALSE); if(!InitInstance(hInstance,nCmdShow))
return (FALSE); while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
BOOL InitApplication(HINSTANCE hInstance)
{
WNDCLASS wcSimpwin; wcSimpwin.style=CS_HREDRAW | CS_VREDRAW;
wcSimpwin.lpfnWndProc =(WNDPROC) MainWndProc;
wcSimpwin.cbClsExtra =0;
wcSimpwin.cbWndExtra =0;
wcSimpwin.hInstance =hInstance;
wcSimpwin.hIcon =LoadCursor(NULL,IDI_APPLICATION);
wcSimpwin.hCursor =LoadCursor(NULL,IDC_ARROW);
wcSimpwin.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wcSimpwin.lpszMenuName =NULL;
wcSimpwin.lpszClassName="SimpwinWClass"; return (RegisterClass(&wcSimpwin));
}BOOL InitInstance(HINSTANCE hInstance,
int nCmdShow)
{
hInst=hInstance; hWndMain=CreateWindow(
"SimpwinWClass",
"ÎҵĴ°¿Ú",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL); if(!hWndMain)
return (FALSE); ShowWindow(hWndMain,nCmdShow);
UpdateWindow(hWndMain); return (TRUE);
}LRESULT CALLBACK MainWndProc(HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps; switch (message)
{
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
TextOut(hdc,20,10,hello,lstrlen(hello));
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd,message,wParam,lParam));
}
return (0);
}
/////////////////////////////////////
最下边的编辑框中去掉/subsystem:console
既然你要做windows,就应该选win32 application
呵呵
慢慢来
大家都是这样过来的----------------------------
May you succeed!
------------------
任何一个程序都存在一个主函数。windows的主函数是WinMain。当你使用某些编译器如VC时,默认的应用程序状态是控制台程序。而控制台程序的主程序是main函数。而你现在要创建一个windows程序,这就是出现上述错误的原因。
改正的方法是:
在编译器环境中进行应用程序的设置。涉及到控制台和windows程序之间转换的设置主要在工程-设置-的c/c++标签和link标签中。打开c/c++标签,选中general选项,在C++预处理程序定义中,将原来的_CONSOLE改称_WINDOWS关键字。
打开link标签,选择general选项,在最下面的编辑框中即阿工程属性中找到/subsystem:console,将console改成windows。
存储工程,编译此时已经没有错误了。
上述调试过程我是在vc6.0中文版上测试通过的。再vc7.0或其他版本中应该道理是一样的。