c语言错误发LNK2001,c语言调试时出现的错误及调整方法

41528d3028836879cd698677c3999917.gifc语言调试时出现的错误及调整方法

VC 中 LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 错误 2009-10-09 11:11学习 VC++时经常会遇到链接错误 LNK2001,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其 LNK2001 错误,常常使人不明其所以然。产生LNK2001 错误的原因:一个是由于编码错误导致的 LNK2001,在这不想详细说.另一个由于编译和链接的设置而造成的 LNK2001.最经常发生的是:“LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol“,产生这个错误的原因是没有为wWinMainCRTStartup 设定程序入口 . 认识这个错误首先在新建工程时要分清 Win32 Application 和 Win32 Console Application.它们都是工作在 32 位 Windows 环境的程序.其中Win32 Application 就是普通的常见的窗口应用程序,当然有的界面做得比较个性化,比如圆形的、不规则形状的.它们都是所谓的 GUI(Graphics User Interface 图形用户接口),我们可以通过鼠标点击来完成控制。而 Win32 Console Application(win32 控制台应用程序)往往是像 MS-DOS 窗口(XP 中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它,或者叫 CUI(Character User Interface 字符用户接口)。遇到如下链接错误:Linking. /subsystem:windowsLIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16Debug/TestWin. : fatal error LNK1120: 1 unresolved externalsError cuting link解决方法是:将 project-settings-link 的 project options 里的 /subsystem:windows改成 /subsystem:console因为 Win32 Application 的入口函数为 WinMainWin32 Console Application 的入口函数是 main也就是说,如果你编写传统的 C 程序,必须建立 Win32 Console 程序,但 VC 里面默认的是Win32 Application,于是上面提及的链接错误就就经常出现了而 Win32 Application 和 Win32 Console 的区别就在于 VC 里链接参数不同另外几种 error LNK2001 错误:在创建 MFC 项目时, 不使用 MFC AppWizard 向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如 error LNK2001 错误, 典型的错误提示有:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainLIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16msvcrtd.lib(crtw.obj) : error LNK2001: unresolved external symbol _WinMain@16nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex下面介绍解决的方法:1. Windows 子系统设置错误, 提示:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainWindows 项目要使用 Windows 子系统, 而不是 Console, 可以这样设置:[Project] [Settings] 选择“Link“属性页,在 Project Options 中将/subsystem:console 改成/subsystem:windows2. Console 子系统设置错误, 提示:LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16控制台项目要使用 Console 子系统 , 而不是 Windows, 设置:[Project] [Settings] 选择“Link“属性页,在 Project Options 中将/subsystem:windows 改成/subsystem:console3. 程序入口设置错误, 提示:msvcrtd.lib(crtw.obj) : error LNK2001: unresolved external symbol _WinMain@16通常, MFC 项目的程序入口函数是 WinMain, 如果编译项目的 Unicode 版本, 程序入口必须改为 wWinMainCRTStartup, 所以需要重新设置程序入口:[Project] [Settings] 选择“C/C++“属性页,在 Category 中选择 Output,再在 Entry-point symbol 中填入 wWinMainCRTStartup, 即可4. 线程运行时库设置错误, 提示:nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex这是因为 MFC 要使用多线程时库, 需要更改设置:[Project] [Settings] 选择“C/C++“属性页,在 Category 中选择 Code Generation,再在 Use run-time library 中选择 Debug Multithreaded 或者 multithreaded其中,Single-Threaded 单线程静态链接库(release 版本)Multithreaded 多线程静态链接库(release 版本)multithreaded DLL 多线程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值