提示出現unresolved external symbol _main搜了下找了下原因如下

2024-01-19 00:08

本文主要是介绍提示出現unresolved external symbol _main搜了下找了下原因如下,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提示出现unresolved external symbol _main搜了下找了下原因如下
在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, error LNK2001错误, 典型的错误提示有
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main 
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex 
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex 


下面介绍解决的方法
1. Windows
子系统设置错误, 提示
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main 
Windows
项目要使用Windows子系统, 而不是Console, 可以这样设置
[Project] --> [Settings] -->
选择"Link"属性页
Project Options中将/subsystem:console改成/subsystem:windows 


2. Console
子系统设置错误, 提示
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 
控制台项目要使用Console子系统, 而不是Windows, 设置
[Project] --> [Settings] -->
选择"Link"属性页
Project Options中将/subsystem:windows改成/subsystem:console 


3.
程序入口设置错误, 提示
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 
通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口
[Project] --> [Settings] -->
选择"Link"属性页
Category中选择Output, 
再在Entry-point symbol中填入wWinMainCRTStartup, 即可 


4.
线程运行时库设置错误, 提示
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex 
nafxcwd.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
多线程动态链接库(release版本
Debug Single-Threaded
单线程静态链接库(debug版本
Debug Multithreaded
多线程静态链接库(debug版本
Debug Multithreaded DLL
多线程动态链接库(debug版本
单线程: 不需要多线程调用时, 多用在DOS环境下 
多线程: 可以并发运行 
静态库: 直接将库与程序Link, 可以脱离MFC库运行 
动态库: 需要相应的DLL动态库, 程序才能运行 
release
版本: 正式发布时使用 
debug
版本: 调试阶段使用


摘自:http://f402259699.blog.hexun.com.tw/48453126_d.html

这篇关于提示出現unresolved external symbol _main搜了下找了下原因如下的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/620690

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

DAY16:什么是慢查询,导致的原因,优化方法 | undo log、redo log、binlog的用处 | MySQL有哪些锁

目录 什么是慢查询,导致的原因,优化方法 undo log、redo log、binlog的用处  MySQL有哪些锁   什么是慢查询,导致的原因,优化方法 数据库查询的执行时间超过指定的超时时间时,就被称为慢查询。 导致的原因: 查询语句比较复杂:查询涉及多个表,包含复杂的连接和子查询,可能导致执行时间较长。查询数据量大:当查询的数据量庞大时,即使查询本身并不复杂,也可能导致

180. 連續出現的數字

180. 连续出现的数字 Question 表:Logs +-------------+---------+| Column Name | Type |+-------------+---------+| id | int || num | varchar |+-------------+---------+在 SQL 中,id 是

Tomcat下载压缩包解压后应有如下文件结构

1、bin:存放启动和关闭Tomcat的命令的路径。 2、conf:存放Tomcat的配置,所有的Tomcat的配置都在该路径下设置。 3、lib:存放Tomcat服务器的核心类库(JAR文件),如果需要扩展Tomcat功能,也可将第三方类库复制到该路径下。 4、logs:这是一个空路径,该路径用于保存Tomcat每次运行后产生的日志。 5、temp:保存Web应用运行过程中生成的临时文件

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位 一、背景二、定位问题三、解决方法 一、背景 flume系列之:定位flume没有关闭某个时间点生成的tmp文件的原因,并制定解决方案在博主上面这篇文章的基础上,在机器内存、cpu资源、flume agent资源都足够的情况下,flume agent又出现了tmp文件无法关闭的情况 二、

跟我一起玩《linux内核设计的艺术》第1章(四)——from setup.s to head.s,这回一定让main滚出来!(已解封)

看到书上1.3的大标题,以为马上就要见着main了,其实啊,还早着呢,光看setup.s和head.s的代码量就知道,跟bootsect.s没有可比性,真多……这确实需要包括我在内的大家多一些耐心,相信见着main后,大家的信心和干劲会上一个台阶,加油! 既然上篇已经玩转gdb,接下来的讲解肯定是边调试边分析书上的内容,纯理论讲解其实我并不在行。 setup.s: 目标:争取把setup.

71-java 导致线程上下文切换的原因

Java中导致线程上下文切换的原因通常包括: 线程时间片用完:当前线程的时间片用完,操作系统将其暂停,并切换到另一个线程。 线程被优先级更高的线程抢占:操作系统根据线程优先级决定运行哪个线程。 线程进入等待状态:如线程执行了sleep(),wait(),join()等操作,使线程进入等待状态或阻塞状态,释放CPU。 线程占用CPU时间过长:如果线程执行了大量的I/O操作,而不是CPU计算