lnk2019无法解析的外部符号_declspec_无法解析的外部符号_main

lnk2019无法解析的外部符号_declspec_无法解析的外部符号_mainC++工程编译时出现如下链接错误提示:原因一:只是在.h里面声明了某个方法,没有在cpp里面实现;原因二:在工程中加入了有相同名字的文件或者类;原因三:如果此类为静态库中定义的类,可能没有添加头文件目录和文件引用的lib静态库路径;添加方法:添加工程的头文件目录:项目->属性->配置属性->C/C++->常规->附加包含目录:加上头文件的存放目录;添加文件引用的lib静态库路径:项目->属性->配置属性->链接器->常规->附加

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

C++工程编译时出现如下链接错误提示:
在这里插入图片描述

原因一:缺少实现

只是在.h里面声明了某个方法,没有在cpp里面实现;我出现过这个问题;
类方法的实现未加类标识:如, “CTest::Connect(void) { … }” 写成了 “Connect(void) { … }”;

原因二:文件同名

在工程中加入了有相同名字的文件或者类;

原因三:缺少.lib路径/引用或.h目录

如果此类为静态库中定义的类,可能没有添加头文件目录和文件引用的lib静态库路径;一般出现于你使用了第三方提供的库,下载了头文件却忘了载库文件,或库文件忘记放到相应的目录下了。

  • 添加工程的头文件目录:

    项目->属性->配置属性->C/C+±>常规->附加包含目录:加上头文件的存放目录;

  • 添加文件引用的lib静态库路径:

    项目->属性->配置属性->链接器->常规->附加库目录:加上lib文件的存放目录;

  • 添加工程引用的lib文件名:

    项目->属性->配置属性->链接器->输入->附加依赖项:加上lib文件名。

或利用预处理命令#pragma comment (lib, “xxx.lib”);

原因四:dll文件未添加

如果此类为动态库中定义的类,可能没有添加该动态库.dll文件到工程中;我出现过这个问题;

添加方法: 将.dll放到生成的.exe所在的文件夹下(项目->属性->配置属性->常规->输出目录,可以看到.exe生成在哪个目录下)

原因五:WIN32和WIN64冲突

预处理器中WIN32和WIN64产生冲突。

项目->属性->配置属性->C/C+±>预处理器,找到预处理器定义,如果其中有WIN32和WIN64这两个的话,就会引发冲突,那么根据项目的情况,是win32位程序还是win64位程序,去掉一个即可,比如下图中的工程是win32,那么只需留下win32,删掉win64,即可编译成功~
在这里插入图片描述
同时要注意lib和dll的位数;

原因六:类型选择错误

WINDOWS和CONSOLE选择
右键工程名, 打开属性,依次找到以下路径:
在这里插入图片描述
在这里插入图片描述

然后将这里的_WINDOWS删除,并添加_CONSOLE

在这里插入图片描述

接下来再依次点击如下路径:
在这里插入图片描述
将这里的子系统切换为“控制台”,修改完成后再次编译即可。

相反,如果是windows程序,就按照相反的设置来配置即可

原因七:位数选择错误

属性页默认的平台是Win32,电脑是x64处理器和系统。
在这里插入图片描述
在这里插入图片描述

原因八:编译C语言出现错误

C++支持函数重载所以C++编译器生成的库文件中的函数名会面目全非,例如在编译过程中,c函数add编译后的符号为“_add”,而在c++的main中,add被编译为“?add@@YAHHH@Z”。两个符号不一致,所以就会在链接过程中报错。

当你的函数是用C语言写的,VS编译器会按C语言规则编译,但链接器却不知道还傻傻的用C++规则的函数名去找结果就找不到了;

方法:在C语言的头文件中加入:

#ifdef __cplusplus
extern "C" { 
   
#endif

void readRegmark(char *regmark);  //这里写函数声明

#ifdef __cplusplus
}
#endif

原因九:声明和定义不匹配

验证声明和定义:使用正确的拼写和大小写,并且在使用或调用该符号的任何位置都正确。可能存在声明但未定义的函数或变量。

函数声明必须匹配定义: 验证函数调用是否匹配声明以及声明是否匹配定义。 调用模板函数的代码还必须拥有包括与定义相同的模板参数的匹配模板函数声明。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185604.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月5日 下午5:36
下一篇 2022年10月5日 下午5:46


相关推荐

  • Flink教程(02)- Flink入门

    Flink教程(02)- Flink入门文章目录 01 引言 02Flink 概述 2 1 什么是 Flink01 引言在上一节 Flink 教程 01 Flink 知识图谱 我们知道了 Flink 的知识大纲 明白了需要学习的主要内容 本专栏以后都是围绕以下内容来讲 Flink 介绍 Flink 环境准备 安装部署 Flink 编程模型 DataStreamAP 状态管理与容错 DataSetAPITa amp SQLFlink 组件栈 Flink 部署与应用 Flink 监控与性能优化本文主要开始讲解 Flink

    2026年3月18日
    2
  • Ubuntu硬盘安装

    Ubuntu硬盘安装Ubuntu 的硬盘安装这个就比较简单了准备工作 一个 4GB 或更大的 U 盘 UbuntuISO 镜像文件 MicrosoftWin 或更高的系统版本 Rufus Ubuntu 官方推荐的免费开源 USB 启动盘制作工具说明 U 盘不要是扩容 U 盘 Ubuntu 粗分几种版本桌面版 图形界面 与服务器版 无图形界面 长期支持版 LTS 5 年 和普通版 9 个月 我们一般选 长期支持的桌面版 官方网站下载镜像因为服务器在国外所以速度极慢推荐网易的镜像链接快到飞起

    2026年3月19日
    2
  • 数据挖掘算法与现实生活中的应用案例[通俗易懂]

    数据挖掘算法与现实生活中的应用案例[通俗易懂]如何分辨出垃圾邮件”、“如何判断一笔交易是否属于欺诈”、“如何判断红酒的品质和档次”、“扫描王是如何做到文字识别的”、“如何判断佚名的著作是否出自某位名家之手”、“如何判断一个细胞是否属于肿瘤细胞”等等,这些问题似乎都很专业,都不太好回答。但是,如果了解一点点数据挖掘的知识,你,或许会有柳暗花明的感觉。本文,主要想简单介绍下数据挖掘中的算法,以及它包含的类型。然后,通过现实中触手可及的、活生生的案例

    2022年6月19日
    94
  • openclaw 新版本无法对接飞书 plugins.entries.feishu: plugin feishu: duplicate plugin id detected; later plugin may be overridden

    openclaw 新版本无法对接飞书 plugins.entries.feishu: plugin feishu: duplicate plugin id detected; later plugin may be overridden

    2026年3月13日
    2
  • 史上最好听的十首纯音乐推荐[通俗易懂]

    史上最好听的十首纯音乐推荐[通俗易懂]天然去雕饰,清水出芙蓉。不需要歌词我们就能感受到那或美丽忧伤,或轻灵欢快,或激昂艰辛的情绪。思绪随着旋律而起伏,心中莫名就有一种感动,无法用词语表达,无言却胜过万语千言。一、《LuvLetter》

    2022年8月4日
    8
  • PyCharm搜索技巧快捷键

    PyCharm搜索技巧快捷键pycharm 使用技巧

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号