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


 
 
正在加载数据...
   
 
 
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的解决方法
[ 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 谢谢……
帮我看看吧?
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-5-10 21:11:00 | By: 六月(游客) ]
 
六月(游客)谢谢,问题解决了:)
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-5-1 20:39:00 | By: C++(游客) ]
 
C++(游客)万恶的vc6.0~~问题太多了!!以后不用了
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-4-27 3:32:00 | By: 新手LUO(游客) ]
 
新手LUO(游客)楼主真是高
而想到把windows改成console的人也不赖
佩服
感谢
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-4-25 9:57:00 | By: wqbaofamily(游客) ]
 
wqbaofamily(游客)楼主说的不全面,如果按照楼主说的仍然出现那个问题的话,反过来设置就应该可以了。我就是把设置里面的windows改为console就可以了。
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-4-10 9:54:00 | By: nuo(游客) ]
 
nuo(游客)那在vc 2008 中遇到这样的问题该怎么改呢?
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-4-3 14:37:00 | By: kane(游客) ]
 
kane(游客)高手,谢谢
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-3-7 23:52:00 | By: flycat(游客) ]
 
flycat(游客)实在是太太太感谢了!
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-2-18 11:01:00 | By: ice(游客) ]
 
ice(游客)设置没有问题,还是出现这样情况怎么办,vc++6.0的!!!请求回复!
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
求救
[ 2008-1-24 9:26:00 | By: 小伍(游客) ]
 
小伍(游客)你好,有一个问题向你求助,就是第一次在编写vc++程序时,编译,执行都没有问题,但是到了第二次启动时,总是有四个连接错误,分别是:
msvcrtd.lib(crtexe.obj) : error lnk2001: unresolved external symbol _main
debug/wuhoufadlg.exe : fatal error lnk1120: 1 unresolved externals
请帮助解决下下
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2008-1-11 17:24:00 | By: husongli(游客) ]
 
husongli(游客)我也有同样的问题...
按照斑竹提供的方案
有解决问题
多谢
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _Wi
[ 2007-12-17 20:44:00 | By: ROCK(游客) ]
 
ROCK(游客)thanks~~
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2007-10-29 17:19:00 | By: xiaosky(游客) ]
 
xiaosky(游客)kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"debug/3-1.pdb" /debug /machine:i386 /out:"debug/3-1.exe" /pdbtype:sept
这是link里的我改了,c/c++里我也改了,但是编译正常,但执行的还是那个错误
--------------------configuration: 3-1 - win32 debug--------------------
linking...
libcd.lib(crt0.obj) : error lnk2001: unresolved external symbol _main
debug/3-1.exe : fatal error lnk1120: 1 unresolved externals
执行 link.exe 时出错.

3-1.exe - 1 error(s), 0 warning(s)
很苦恼,希望能帮忙看看,解答一下
以下为blog主人的回复:
请仔细检查一下设置。
如果可能的话,可以把您的工程发到vlongsoft#163.com.

对不起,没有及时回复您!
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2007-10-29 17:17:00 | By: xiaosky(游客) ]
 
xiaosky(游客)kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"debug/3-1.pdb" /debug /machine:i386 /out:"debug/3-1.exe" /pdbtype:sept
这是link里的我改了,c/c++里我也改了,但是编译正常,但执行的还是那个错误
--------------------configuration: 3-1 - win32 debug--------------------
linking...
libcd.lib(crt0.obj) : error lnk2001: unresolved external symbol _main
debug/3-1.exe : fatal error lnk1120: 1 unresolved externals
执行 link.exe 时出错.

3-1.exe - 1 error(s), 0 warning(s)
很苦恼,希望能帮忙看看,解答一下
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
 
Re:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
[ 2007-10-9 18:04:00 | By: iooi(游客) ]
 
iooi(游客)设置根本没有问题,不行。。
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
发表评论:
正在加载数据...