正在加载数据...
 
     
 
正在加载数据...
时 间 记 忆
正在加载数据...
最 新 评 论
正在加载数据...
专 题 分 类
正在加载数据...
最 新 日 志
正在加载数据...
最 新 留 言
正在加载数据...
搜 索
用 户 登 录
正在加载数据...
友 情 连 接
博 客 信 息
正在加载数据...


 
 
正在加载数据...
   
 
 
vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2006-8-15 12:14:00 | By: Robert.Long ]
 

一,问题描述

error LNK2001: unresolved external symbol _WinMain@16
debug/main.exe:fatal error LNK 1120:1 unresolved externals
error executing link.exe;

二,产生这个问题可能的原因

1, 你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain.

2.  你用vc打开了一个.c/.cpp 文件,然后直接编译这个文件,这个文件中使用了WinMian而不是main作为入口函数。vc这时的默认设置是针对控制台程序的。

三, 解决方法

1.进入project->setting->c/c++, 在category中选择preprocessor,在processor definitions中删除_CONSOLE, 添加_WINDOWS

2.进入project->setting->Link, 在Project options中将 /subsystem:console改为/subsystem:windows.

3.保存设置,Rebuild All.

VS2005中的设置请参考对应项进行设置

四,VS2005中的设置

1.菜单中选择 Project->Properties, 弹出Property Pages窗口

2.在左边栏中依次选择:Configuration Properties->C/C++->Preprocessor,然后在右边栏的Preprocessor Definitions对应的项中删除_CONSOLE, 添加_WINDOWS.

3.在左边栏中依次选择:Configuration Properties->Linker->System,然后在右边栏的SubSystem对应的项改为Windows(/SUBSYSTEM:WINDOWS)

4.Rebuild All. Ok ?

测试:(环境:vs2005,编程语言vc)

1.用文本编辑器编写如下代码:

// test.c
#i nclude <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 MessageBox(NULL, "Hello!", "title", MB_OK);
}

假设把文件包存为test.c.

2.用vs2005建一个Win32 Console Application, 注意在Application Settings设置为Empty project. 然后把test.c添加到工程中去。

3.vs2005建立的工程默认是支持UNICODE的,我不用这个,所以在菜单中选择 Project->Properties, 弹出Property Pages窗口。在左边栏中依次选择:Configuration Properties->General,然后把右边栏的Character Set 改为Use Multi-Byte Character Set.

4.编译,出现如下错误:
MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
C:\test\Debug\test.exe : fatal error LNK1120: 1 unresolved externals

5.按照上述VS2005中的设置方法进行设置,然后再编译,错误消失了吧! 

(Update:2006-10-28添加第四部分)

 
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2011-12-15 13:01:00 | By: 谢谢(游客) ]
 
谢谢(游客)#i nclude<stdio.h>
#define MAX 50
void InputData(int list[],int n)//建立待排序存入数据表
{
printf("input data:\n");
for(int i=0;i<n;i++)
scanf("%d",list[i]);
}
void OutputData(int list[],int n)//输出数据表内容
{
printf("\nthe current soring is:");
for(int k=0;k<n;k++)
printf("%d",list[k]);
}
/*函数名: void QuickSort(int list[],int n)
//参数: (传入)int list[],待排序数组
// (传入)int n ,数组长度
//功能: 使用快速排序对数据进行排序
*/
void QuickSort(int list[],int start,int end)
{
int i=start;
int j=end;
int temp;
int value=list[start];
if(start<end)
{
do
{
//c从左到右找比支点大的值
while(i <= end && list[i] <= value)i++;
//从右向左找比支点小的值
while(j > start && list[j] > value)j--;
if(i<j)//交换list[i]和list[j]的值
{
temp=list[i];
list[i]=list[j];
list[j]=temp;
}
}while(i < j);
//交换list[start]和list[j]的值
temp=list[start];
list[start]=list[j];
list[j]=temp;

OutputData(list,8);//将每趟排序结果输出]
QuickSort(list,start,j-1);
QuickSort(list,j+1,end);
}
}
void main(){
int num;
int list[MAX];
printf("input length of the list(n<50):\n");
scanf("%d",&num);
InputData(list,num);
QuickSort(list,0,num-1);
}
怎么不管用呢?

 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2011-10-20 8:53:00 | By: Guest(游客) ]
 
Guest(游客)呵呵,问题解决了.

我本来是要创建一个C++源程序,选择了创建"Win32"项目,所以构建程序,就出错了,呵呵.其实也不用什么改,重新建一个,在创建项目时,注意是"Windows console application(Windows控制台应用程序)"就好了.
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2011-10-9 10:40:00 | By: 夏天(游客) ]
 
夏天(游客)反着用不错
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2011-9-17 0:09:00 | By: 吃饭香(游客) ]
 
吃饭香(游客)高手
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2011-8-4 16:27:00 | By: vonseashore(游客) ]
 
vonseashore(游客)太感谢了,问题解决了!
我是学习C的,需要main函数,楼主的方法不对,但是反过来就对了。感谢楼下的wqbaofamily网友!当然也感谢楼主,希望楼主完善一下博客
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2011-7-4 23:33:00 | By: 强帖(游客) ]
 
强帖(游客)我也反过来用的,呵呵,效果相当不错。谢谢各位大虾啦~
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2011-6-11 19:06:00 | By: 周俊(游客) ]
 
周俊(游客)谢谢,高手
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2011-6-7 16:03:00 | By: xiaobai(游客) ]
 
xiaobai(游客)谢谢,我按楼上的建议解决了问题,感激不尽
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2011-4-15 0:01:00 | By: newLearner(游客) ]
 
newLearner(游客)Thanks.

我用 Microsoft Visual C++ 2010 Express 建立一个空的 Win32 Project,然后就写了一个简单的HelloWorld.c,

#i nclude <Windows.h>

int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MessageBox(NULL, TEXT("Hello, Windows 98!"), TEXT("HelloMsg"), 0);

return 0;
}

但是怎么也不成功,出现的错误是:

MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

根据博主提供的信息修改之后编译成功了。非常感谢。
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2011-3-13 11:43:00 | By: 天才也性感(游客) ]
 
天才也性感(游客)太谢谢了,能用了
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2011-1-12 12:45:00 | By: ggy(游客) ]
 
ggy(游客)#i nclude <windows.h>
void main()
{
MessageBox(NULL," Hello World!","我的第一个窗口程序",MB_OK);
}
我只想运行这个程序
但是总有上面的错误
按上面的改了还是同样的错误
是工程没选对还是??
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2010-12-29 15:39:00 | By: xxx(游客) ]
 
xxx(游客)
我是反过来用的,问题解决。
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2010-12-22 22:28:00 | By: 复活的小鳖(游客) ]
 
复活的小鳖(游客)反过来做确实有用,呵呵
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2010-10-18 13:27:00 | By: 书笙拓荒(游客) ]
 
书笙拓荒(游客)反过来设置好像有用..哈哈
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2010-5-23 14:31:00 | By: rsh(游客) ]
 
rsh(游客)有两种方法
(1)在project->settings->link中将link选项/subsystem:windows删掉或改为/subsystem:console
(2)重建工程,选Windows Console application
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2010-4-23 22:08:00 | By: zzy(游客) ]
 
zzy(游客)Program->Setting->General->Microsoft Foundation Classes中选择Use MFC in a Shared DLL就可以了
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2010-1-17 16:34:00 | By: 电线(游客) ]
 
电线(游客)结论:写控制台程序的时候就用console(楼主说的那两个地方),写MFC程序的时候就要用windows。

程序的入口不同,那个错误提示的意思就是说找不到程序入口,改成和自己程序对应的入口设置就可以了。
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2010-1-5 17:03:00 | By: 依婷(游客) ]
 
依婷(游客)太感謝你了(尤其也很感謝下面補充的留言)

我反過來操作就成功了
非常感謝

建議作者要不要附註一下反著更改也能解決問題呢
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2009-12-29 10:01:00 | By: 路过(游客) ]
 
路过(游客)果然把入口函数改成main就好了,其他不改...
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2009-11-10 17:52:00 | By: feelings(游客) ]
 
feelings(游客)感谢!
可是原理是什么呢?可以讲讲吗?谢啦...
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2009-10-15 16:40:00 | By: Allen(游客) ]
 
Allen(游客)谢谢~强啊。
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2009-8-11 15:05:00 | By: msz(游客) ]
 
msz(游客)谢谢你,按照你的说法解决了,不胜感激
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2009-6-27 10:18:00 | By: vcyin(游客) ]
 
vcyin(游客)都是托儿吧,我咋按照这个解决不了
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2009-6-6 19:29:00 | By: youzhipeng(游客) ]
 
youzhipeng(游客)好。
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2009-5-17 18:51:00 | By: cooperyang(游客) ]
 
cooperyang(游客)多谢楼主,厉害了
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2009-3-24 11:27:00 | By: leaf(游客) ]
 
leaf(游客)我也遇到了这个问题,按照上面的步骤解决了,太感激了!
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2009-3-23 13:27:00 | By: SZ(游客) ]
 
SZ(游客)太感谢楼主了,我的问题终于解决了
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2009-3-5 13:46:00 | By: xxm(游客) ]
 
xxm(游客)非常感谢,^_^
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-12-2 10:18:00 | By: 游客(游客) ]
 
游客(游客)好帖
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-11-20 4:33:00 | By: comm(游客) ]
 
comm(游客)太感谢了~~~~~~~
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-10-24 22:44:00 | By: 小蒋(游客) ]
 
小蒋(游客)为什么第2次用又要改一次啊???????????????????????
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-10-13 23:07:00 | By: r.paul(游客) ]
 
r.paul(游客)很好,反过来也行
多谢!~!~
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-10-1 16:15:00 | By: hehe(游客) ]
 
hehe(游客)太感谢楼主了,终于解决问题了
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-8-18 14:21:00 | By: 大胆地(游客) ]
 
大胆地(游客)非常感谢,不管是楼主也好,还是下面积极补充的也好,很感谢
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-8-8 14:09:00 | By: lihai(游客) ]
 
lihai(游客)
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-7-8 14:31:00 | By: dingo(游客) ]
 
dingo(游客)很好呀,谢谢了!
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-6-26 13:37:00 | By: 223(游客) ]
 
223(游客)我就是要反过来的人
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-6-14 11:39:00 | By: 67(游客) ]
 
67(游客)非常感谢,我按照相反的设置,把windows改为console,因为我需要的入口参数为main,可以用了,支持你
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-5-28 13:04:00 | By: gugu(游客) ]
 
gugu(游客)我按你的教的方法改了 ,但是还是不行 ,还有没有其他别的方法呀?
libcd.lib(wincrt0.obj) : error lnk2001: unresolved external symbol _winmain@16
debug/ball.exe : fatal error lnk1120: 1 unresolved externals
error executing link.exe.
这个要怎么解决呀??谢谢了
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-5-16 23:07:00 | By: VC初学者(游客) ]
 
VC初学者(游客)
我是一个初学者,对vc很陌生,我自己照着书上的写的类结果还是不行啊 ,帮帮忙啊, 要交作业啊1 谢谢……
帮我看看吧?
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
发表评论:
正在加载数据...