提示出现unresolved external symbol _main的解决方法

时间:2023-02-13 03:41:48 

提示出现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版本: 调试阶段使用

标签:提示出现unresolved,external,symbol,main的解决方法
0
投稿

猜你喜欢

  • Spring Security 中如何让上级拥有下级的所有权限(案例分析)

    2022-01-28 16:55:26
  • C#中事件只能在内部调用的原因分析

    2023-08-09 05:07:00
  • java9迁移注意问题总结

    2022-07-19 11:26:30
  • springboot使用redis对单个对象进行自动缓存更新删除的实现

    2023-06-30 19:14:36
  • 轻松实现可扩展自定义的Android滚轮时间选择控件

    2022-06-25 04:21:24
  • Spring Cloud Gateway替代zuul作为API网关的方法

    2023-05-03 07:19:58
  • Android 自定义一套 Dialog通用提示框 (代码库)

    2022-10-08 06:20:31
  • java.lang.Runtime.exec的左膀右臂:流输入和流读取详解

    2023-08-06 04:59:03
  • Java常用锁synchronized和ReentrantLock的区别

    2023-06-01 04:42:21
  • Android开发之开发者头条(二)实现左滑菜单

    2022-02-28 11:18:31
  • unity AudioSource播放完声音后要执行的函数或条件操作

    2021-07-04 21:46:37
  • Android基于OpenCV实现QR二维码检测

    2021-12-13 07:56:39
  • SpringBoot整合Mybatis,解决TypeAliases配置失败的问题

    2023-11-28 14:59:24
  • IDEA离线安装maven helper插件的图文教程

    2023-11-28 16:00:24
  • Android RecyclerView自定义上拉和下拉刷新效果

    2022-03-17 23:06:00
  • bs架构和cs架构的区别_动力节点Java学院整理

    2021-09-18 22:06:18
  • 算法练习之从String.indexOf的模拟实现开始

    2023-02-23 09:20:40
  • 使用Spring事件机制实现异步的方法

    2023-06-23 06:47:08
  • SpringBoot创建RSocket服务器的全过程记录

    2022-10-24 10:20:25
  • 详解C语言结构体中的函数指针

    2023-11-21 13:04:33
  • asp之家 软件编程 m.aspxhome.com