,LINK : error LNK2001: 无法解析的外部符号 ,代码应该没错啊全部照书抄的啊
求助,LINK : error LNK2001: 无法解析的外部符号 ,代码应该没错啊,全部照书抄的啊····求助!!!!!!!!!!!!!!!!
刚开始学习windows编程,第一个程序就出错,以下是代码:照书抄的,
#include<windows.h>
CHAR szTitle[]="Windows 编程技术01章01例";
CHAR szWindowsClass[]=""EX0101";
BOOL MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE,int);
LRESULT CALLBACK WndProc(HWND,UNIT,WPARAM,LPARAM);
void MyPrint(HWND hWhd);
int CALLBACK WinMain
(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
{
MSG msg;
MyRegisterClass(hInstance);
if(!InitInstance(hInstance,nCmdShow))
{
return FALSE;
}
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}
BOOL MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style=CS_HREDRAW|CS_VREDRAW;
wcex.lpfnWndProc=(WNDPROC)WndProc;
wcex.cbClsExtra=0;
wcex.cbWndExtra=0;
wcex.hInstance=hInstance;
wcex.hIcon=NULL;
wcex.hCursor=NULL;
wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName=NULL;
wcex.lpszClassName=szWindowClass;
wcex.hIconSm=NULL;
return RegisterClassEx(&wcex);
}
BOOL InitInstance(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,400,250,NULL,NULL,hInstance,NULL);
if(! hWnd)
{
return FALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd,UNIT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_PAINT:
MyPrint(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}
void MyPrint(HWND hWnd)
{
PAINTSTRUCT ps;
HDC hdc;
hdc=BeginPaint(hWnd,&ps);
char szText[]="手工编写的Windows程序!";
::TextOut(hdc,100,100,szText,lstrlen(szText));
EndPaint(hWnd,&ps);
}
------最佳解决方案--------------------
不是代码问题,
设置问题,
要么就是工程建错,
要么就是没有引入 相关 lib
把错误提示全部 贴出来!
------其他解决方案--------------------
CS_VREDRAW;
wcex.lpfnWndProc=(WNDPROC)WndProc;
wcex.cbClsExtra=0;
wcex.cbWndExtra=0;
wcex.hInstance=hInstance;
wcex.hIcon=NULL;
wcex.hCursor=NULL;
wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName=NULL;
wcex.lpszClassName= szWindowsClass;//szWindowClass
wcex.hIconSm=NULL;
return RegisterClassEx(&wcex);
}
BOOL InitInstance(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd=CreateWindow(szWindowsClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,400,250,NULL,NULL,hInstance,NULL);
if(! hWnd)
{
return FALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_PAINT:
MyPrint(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}
void MyPrint(HWND hWnd)
{
PAINTSTRUCT ps;
HDC hdc;
刚开始学习windows编程,第一个程序就出错,以下是代码:照书抄的,
#include<windows.h>
CHAR szTitle[]="Windows 编程技术01章01例";
CHAR szWindowsClass[]=""EX0101";
BOOL MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE,int);
LRESULT CALLBACK WndProc(HWND,UNIT,WPARAM,LPARAM);
void MyPrint(HWND hWhd);
int CALLBACK WinMain
(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
{
MSG msg;
MyRegisterClass(hInstance);
if(!InitInstance(hInstance,nCmdShow))
{
return FALSE;
}
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}
BOOL MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style=CS_HREDRAW|CS_VREDRAW;
wcex.lpfnWndProc=(WNDPROC)WndProc;
wcex.cbClsExtra=0;
wcex.cbWndExtra=0;
wcex.hInstance=hInstance;
wcex.hIcon=NULL;
wcex.hCursor=NULL;
wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName=NULL;
wcex.lpszClassName=szWindowClass;
wcex.hIconSm=NULL;
return RegisterClassEx(&wcex);
}
BOOL InitInstance(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,400,250,NULL,NULL,hInstance,NULL);
if(! hWnd)
{
return FALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd,UNIT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_PAINT:
MyPrint(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}
void MyPrint(HWND hWnd)
{
PAINTSTRUCT ps;
HDC hdc;
hdc=BeginPaint(hWnd,&ps);
char szText[]="手工编写的Windows程序!";
::TextOut(hdc,100,100,szText,lstrlen(szText));
EndPaint(hWnd,&ps);
}
------最佳解决方案--------------------
不是代码问题,
设置问题,
要么就是工程建错,
要么就是没有引入 相关 lib
把错误提示全部 贴出来!
------其他解决方案--------------------
CS_VREDRAW;
wcex.lpfnWndProc=(WNDPROC)WndProc;
wcex.cbClsExtra=0;
wcex.cbWndExtra=0;
wcex.hInstance=hInstance;
wcex.hIcon=NULL;
wcex.hCursor=NULL;
wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName=NULL;
wcex.lpszClassName= szWindowsClass;//szWindowClass
wcex.hIconSm=NULL;
return RegisterClassEx(&wcex);
}
BOOL InitInstance(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd=CreateWindow(szWindowsClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,400,250,NULL,NULL,hInstance,NULL);
if(! hWnd)
{
return FALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_PAINT:
MyPrint(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}
void MyPrint(HWND hWnd)
{
PAINTSTRUCT ps;
HDC hdc;