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

转载 2011年10月30日 17:19:29

一,问题描述

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

连接库的问题

先看一下错误吧,之前在debug下编译时没有问题的,但在release下时有问题的: : error LNK2019: unresolved external symbol _strlen refe...
  • joimson
  • joimson
  • 2013年08月13日 11:15
  • 4332

libcurl.lib 导入问题 须知

vc2008构建和使用libcurl静态库 http://blog.csdn.net/mos2046/article/details/7697530 1>下载CURL源代码curl...
  • bible521125
  • bible521125
  • 2015年11月17日 17:11
  • 1949

GPU编程之GLSL(附加一)——常见问题

如果在运行时出现如下问题: 1>ogl3.obj : error LNK2001: 无法解析的外部符号 __imp____glewGetShaderInfoLog 1>ogl3.obj : err...
  • Sun7_She
  • Sun7_She
  • 2014年08月15日 09:58
  • 1276

解决OpenSSL 在VC2015下链接报错的问题。

起因: 公司项目 服务器的nginx是使用的定制版,使用了concat、缩略图生成等模块,为了方便同事们在办公室环境下使用nginx,在Windows下编译nginx,并带上这两个模块。之前在 VC2...
  • bywayboy
  • bywayboy
  • 2015年10月07日 11:05
  • 8011

mysql的安装、C++访问mysql数据库、编码设置问题

一.mysql的安装,这个相对简单,直接去官网下载mysql安装程序,就可以完成安装过程,网上有很多安装教程,这个没什么注意事项。   二、C++访问mysql,主要是用到mysql定义的头文件,内部...
  • IAccepted
  • IAccepted
  • 2014年06月21日 17:30
  • 5712

Matlab 生成mexwin64文件时遇到的问题

近期下了一个matlab的 人体上半身探测的工具包calvin_upperbody_detector_v1.04,由于其本身是在linux下直接使用的,搬到win7上出现了一点问题。 在使用...
  • catherine627
  • catherine627
  • 2015年09月09日 11:30
  • 2204

Caffe: gflag编译出现问题汇总

1. 使用Unicode字符集: 出现问题 E:\CodeBase\ML\Caffe\ThirdPartySrc\gflags-master\src\gflags.cc(1340): error C2...
  • wishchin
  • wishchin
  • 2016年07月12日 14:36
  • 2847

使用protobuf()

Protobuf的简介请看这里:http://blog.csdn.net/program_think/archive/2009/05/31/4229773.aspx 哪我们来讲一下该如何使用 1,首先...
  • ganpengjin1
  • ganpengjin1
  • 2015年10月21日 01:19
  • 1230

在vs2013上运行OpenGL编程指南第8版第一个程序

本文主要解决vs2013下运行OpenGL编程指南第八版第一个程序的出错问题
  • u011517139
  • u011517139
  • 2017年06月05日 20:21
  • 100

VC环境OpenSSL安装以及编程过程

VC环境OpenSSL安装以及编程过程   SSL就是Secure Sockets Layer,是一种安全套接字协议,详情请参考链接中的介绍。       配置过程中需要生成一些mak文件,这些生成代...
  • wabil
  • wabil
  • 2016年03月26日 09:24
  • 2014
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
举报原因:
原因补充:

(最多只允许输入30个字)