出现fatal error LNK1120: 1 unresolved externals
我自学可视化编程时复制的书上的代码,然后运行时出错:#include<windows.h>LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,...
我自学可视化编程时复制的书上的代码,然后运行时出错:
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //窗口函数说明
//------------ 以下初始化窗口类----------------
int WINAPI WinMain(HINSTANCEhInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,intnCmdShow)
{
HWND hwnd ;
MSG Msg ;
WNDCLASS wndclass ;
char lpszClassName[] = "df";//窗口类名
char lpszTitle[]= "My_Windows";//窗口标题名
//窗口类的定义
wndclass.style = 0;//窗口类型为缺省类型
wndclass.lpfnWndProc = WndProc ;//窗口处理函数为WndProc
wndclass.cbClsExtra= 0 ;//窗口类无扩展
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) ;
}
return Msg.wParam;//消息循环结束即程序终止时将信息返回系统
}
//窗口函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);//调用PostQuitMessage发出WM_QUIT消息
default://缺省时采用系统消息缺省处理函数
return DefWindowProc(hwnd,message,wParam,lParam);
}
return (0);
}
1>------ Build started: Project: Win32Project1, Configuration: Debug Win32 ------
1> Source.cpp
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>F:\my work\交大\JI\self-learned programming\Win32Project1\Debug\Win32Project1.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
顺带说明,我用的是VS2012,教材是按照2005编的,我怀疑是不是版本的问题?但我就想用2012额。。。 展开
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //窗口函数说明
//------------ 以下初始化窗口类----------------
int WINAPI WinMain(HINSTANCEhInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,intnCmdShow)
{
HWND hwnd ;
MSG Msg ;
WNDCLASS wndclass ;
char lpszClassName[] = "df";//窗口类名
char lpszTitle[]= "My_Windows";//窗口标题名
//窗口类的定义
wndclass.style = 0;//窗口类型为缺省类型
wndclass.lpfnWndProc = WndProc ;//窗口处理函数为WndProc
wndclass.cbClsExtra= 0 ;//窗口类无扩展
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) ;
}
return Msg.wParam;//消息循环结束即程序终止时将信息返回系统
}
//窗口函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);//调用PostQuitMessage发出WM_QUIT消息
default://缺省时采用系统消息缺省处理函数
return DefWindowProc(hwnd,message,wParam,lParam);
}
return (0);
}
1>------ Build started: Project: Win32Project1, Configuration: Debug Win32 ------
1> Source.cpp
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>F:\my work\交大\JI\self-learned programming\Win32Project1\Debug\Win32Project1.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
顺带说明,我用的是VS2012,教材是按照2005编的,我怀疑是不是版本的问题?但我就想用2012额。。。 展开
3个回答
展开全部
unresolvedexternals未解决的外部错误是由未声明的函数引起的,可以通过在调用位置之前声明该函数来消除该错误。
正确的程序如下:
Intjh(intaintb。br处理);//函数声明,消除了未解析的外部错误
Intmain()
{
Inta=4,b=8,c;
C=jh(a,b);因为在调用之前没有声明函数jh,所以报告了一个错误
Printf(“%d,%d,%d”,a,b,c);
}
Intjh(inta,intb)//函数定义必须在调用后声明
{
一个稳定的;
C=;
A=b;
B=c。
Returnc;
}
扩展资料:
在编写时,函数声明可以复制函数头并在末尾添加分号。而且只能在参数表中写入每个参数的类型名,而不能写入参数名。
正如您可以在头文件中声明变量并在源文件中定义变量一样,您也可以在头文件中声明函数并在源文件中定义函数。
对于大多数新手来说,将函数声明直接放在使用该函数的每个源文件中是一种常见且首选的方法,并且是合法的。但这种方法已经过时,而且容易出错。
解决方案是将函数声明放在头文件中,以确保指定函数的所有声明是一致的。如果函数接口发生变化,只需要修改它的唯一声明。
展开全部
你建工程的时候点错选项了。
这个工程应该选Win32 Application,而你选的是Win32 Console Application。后面的入口函数是main函数,所以才说未解析的外部符号main。
最简单的办法,重新建个Win32 Application的工程,注意不要选错选项,把这段代码拷贝进去就行了。另外也可以改设置,不过我没用过VS2012,也不知道它的设置是什么样的,所以你就用上面那种方法吧。
这个工程应该选Win32 Application,而你选的是Win32 Console Application。后面的入口函数是main函数,所以才说未解析的外部符号main。
最简单的办法,重新建个Win32 Application的工程,注意不要选错选项,把这段代码拷贝进去就行了。另外也可以改设置,不过我没用过VS2012,也不知道它的设置是什么样的,所以你就用上面那种方法吧。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
工程建错了吧。重建个。。用win32。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询