C++ : error LNK2019

IDE环境

VS2017 COMMUNITY

项目属性

发布版本

x86-Debug调试版本-Win32

链接器子系统

控制台(/SUBSYSTEM:CONSOLE)

输出窗口

生成错误
1>---- 已启动生成: 项目: CircleWithConstantMemberFunctions, 配置: Debug Win32 ----
1>MSVCRTD.lib(exe_main.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 “int __cdecl invoke_main(void)” (?invoke_main@@YAHXZ) 中被引用
1>E:\我\C++\C++程序\CircleWithConstantMemberFunctions\Debug\CircleWithConstantMemberFunctions.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>已完成生成项目“CircleWithConstantMemberFunctions.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

尝试操作

对于这个生成错误,我尝试搜索到了一些解释及方法,包括但不限于以下几种:

  1. error LNK2019: 无法解析的外部符号这个错误,“最根本的原因在于链接过程中没有搜索到程序用到的库文件”。

  2. 如果是windows程序(Win32 Application),那么WinMain或者wWinmain是入口函数,在VS2017中新建项目为“win32项目”;
    如果是dos控制台程序(Win32 console Application),那么main或者wMain是入口函数,在VS2017中新建项目为“win32控制台应用程序”。
    若入口函数指定不当,则运行时时找不到配合函数,它就会报告错误。
    解决办法
    1.WINDOWS程序:
    菜单->项目->属性, 配置属性->链接器->系统, 子系统
    子系统的项改为窗口(/SUBSYSTEM:WINDOWS)
    2.CONSOLE程序:
    菜单->项目->属性, 配置属性->链接器->系统, 子系统
    子系统的项改为控制台(/SUBSYSTEM:CONSOLE)
    ——尝试过前两个方法之后,我发现只要是“新建项目”时正确选择了创建控制台程序还是窗体程序,就不必修改这个子系统变量,因为它总是正确的。
    3.“删除**(/subsytem:windows)**开关,让连接程序根据源代码中实现的函数进行正确的操作。”
    ——尝试这个方法时,我的操作是选择“未设置”,我的理解是不初始化入口函数,经编译后,程序提示错误,错误信息为:
    1>LINK : fatal error LNK1561: 必须定义入口点
    故,这个方法我不知道该如何实现。

  3. 新建一个项目,重新编译。
    ——emmmm

  4. 检查类实现文件(.cpp)中是否有main()函数。
    ——检查发现果然没有main函数。我在头文件中完成了类的声明,在类实现文件中完成了类实现,而缺少以下任一操作:
    a.在类实现文件中添加main函数实现代码;
    b.新建一个源文件,将main函数单独列出,从而作为类的目标文件(客户程序)。——我选择将类实现和目标代码分离,故选用了此方法,编译通过,生成成功。

**想来这其实是一个很低级的失误。
**

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值