提示出現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

相关文章

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶