当前位置:首页 > 编程开发

vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法

webgou17年前 (2009-10-30)编程开发165

一,问题描述

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中的设置方法进行设置,然后再编译,错误消失了吧! 

http://blog.csai.cn/user1/16781/archives/2006/6412.html

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=75

标签: vc
分享给朋友:

“vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法” 的相关文章

char,short ,int ,long,long long,unsigned long long数据范围

 速查表:char -128 ~ +127 (1 Byte)...…

Unity反编译备忘录

1. disunity+disunityGUI编译后可执行文件地址:https://github.com/ata4/disunity/releasesdisunity在github源码地址:https://github.com/ata4/disunity 2.DevXUnity-Unpac…

Android模拟器skin制定方式详解

Android手 机操作系统可以通过在模拟器中的一些相关操作来进行相应的修改已满足大家的需求。在这里就先为大家详细介绍一下有关Android模拟器的具体概念。 Android模拟器skin总共有四个标准的制定方式,分别对应HVGA(横屏/竖屏)和QVGA(横屏/竖屏),我们只要在启动模拟器时使用…

跟踪wince遇到的问题

今天,测试报告的几个问题,非常的诡异,把 问题记录下来. 1.wince直接运行explorer.exe,模拟导航,出现黑屏 2.运行我们的应用程序,模拟导航,出现内存只剩下2M. 3.出现读取注册表出错,通过在数字电视下,打大灯,旋音量很容易. 第一个问题,硬件工程师,用电压表量电压正常,…

axis支持的类型

那些java的对象是可以序列化为xml的, 并且可以从xml反序列化为java对象的?那些对象与xml之间不能够序列化和反序列化?在开发的时候应该注意哪些问题?根据我的理解, 有如下几种对象:1)axis1.2内在支持的几种对象类型。     &nb…

wince 串口驱动分析

通常在串口控制器上会有两个FIFO用作接收和发送的缓冲,至少在我所接触的几款CPU是这样的。当接收到数据后会直接将接收到的数据置入该缓冲器,并同 时由控制电路向本地总线发出通知,以便让本地总线将缓冲器内的数据读走,这样在响应(等待和读取)的过程中仍然能通过缓冲器来接收数据。而发送发送的过程 刚刚相反…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。