-
2022-03-28 11:03:05
错误相关文件:
AndQuery.h
#pragma once #ifndef _ANDQUERY_H_ #define _ANDQUERY_H_ #include"BinaryQuery.h" using namespace std; class Query; class AndQuery : public BinaryQuery { friend Query operator&(const Query&, const Query&); AndQuery(const Query& left, const Query& right) : BinaryQuery(left, right, "&") { cout << "AndQuery的构造函数" << endl; } QueryResult eval(const TextQuery&) const; }; inline Query operator&(const Query& l, const Query& r) { return shared_ptr<Query_base>(new AndQuery(l, r)); } #endif
第一个错误的原因
main.cpp
忘记包含头文件了。
报错信息:LNK2019 无法解析的外部符号 "class Query __cdecl operator&(class Query const &,class Query const &)" (??I@YA?AVQuery@@AEBV0@0@Z), 函数 main 中引用了该符号
报错信息似乎是说:你在
main
函数里使用了重载的&
运算符,但是找不到它的定义在哪。
仔细一想,哦,确实是,我忘记包含头文件(AndQuery.h
)了,怎么可能找到。
这种低级错误,在大工程里一定要注意,因为涉及到的头文件太多,继承体系也很复杂,很容易出现忘记包含某个头文件的情况。第二个错误的原因
没有对父类的纯虚函数定义自己的虚函数。
报错信息:LNK2001 无法解析的外部符号 "private: virtual class QueryResult __cdecl AndQuery::eval(class TextQuery const &)const " (?eval@AndQuery@@EEBA?AVQueryResult@@AEBVTextQuery@@@Z)
根据报错信息很难推断出是为啥错了,只能知道,是因为
AndQuery
的成员函数eval()
出的错。
我们去分析这个成员函数。
这个成员函数是父类定义的纯虚函数,我们之前说过,对于抽象父类声明的纯虚函,子类一定要给出他的实际定义,把它变成自己的虚函数。即使现有的代码根本不会调用到这个虚函数,那也还是要给出定义。
除非你的当前的代码中根本没有用到这个子类,这时,你才可以不给出定义。更多相关内容 -
error LNK2019: 无法解析的外部符号 问题的解决办法
2020-09-05 09:05:00error LNK2019: 无法解析的外部符号 问题的解决办法,需要的朋友可以参考一下 -
VS开发中遇到无法解析外部符号问题(LNK错误)
2019-06-12 18:34:11在VS开发中,很容易遇到外部符号无法解析的问题,而这些问题大部分都是引用库失败导致的,只需正确的加载到了库,这类问题就可以解决了 但也存在非库的原因,比如编码问题 关于VS编码格式以及VS修改行尾编码格式 ...在VS开发中,很容易遇到外部符号无法解析的问题,而这些问题大部分都是引用库失败导致的,只需正确的加载到了库,这类问题就可以解决了
但也存在非库的原因,比如编码问题
关于VS编码格式以及VS修改行尾编码格式问题如图
解决办法代码文件保存行尾不一致导致的,行尾改为 Windows(CR LF)。
修改后即可编译通过
-
VS“无法解析的外部符号”的错误场景
2021-03-01 19:38:29例如项目A中调用了静态库a.lib的对外接口func1(),而a.lib中的接口func1()又引用了静态库b.lib中的func2(),但是项目A只引用了a.lib,导致func2()符号无法解析。示意图如下: 这种情况只需要将a.lib和b.lib...1.引用库时发生错误,例如路径错误或者库名错误等。
项目属性--链接器--常规--附加库目录 指定库的路径
项目属性--链接器--输入--附加依赖项 指定库的名称
2.库与库之间存在嵌套调用,引用库时只引用了上层库,没有引用下层库。
例如项目A中调用了静态库a.lib的对外接口func1(),而a.lib中的接口func1()又引用了静态库b.lib中的func2(),但是项目A只引用了a.lib,导致func2()符号无法解析。示意图如下:
这种情况只需要将a.lib和b.lib放在同一目录,例如E:\lib,然后在VS的 项目属性--链接器--命令行 中添加如下命令一次性引入即可:
E:\lib\*.lib
3.本项目的项目属性与引用库的项目属性不一致,包括但不限于以下若干项:
(1)平台不一致,例如项目A是64位(x64),而引用的库是32位(x86);
(2)配置不一致,例如项目A是Release模式,而引用的库时Debug模式;
(3)字符集不一致,例如项目A的字符集为“使用UNICODE字符集”,而引用的库的字符集为“使用多字节字符集”;
(4)运行库不一致,例如项目A的运行库设置为“多线程 (/MT)”,而引用的库的运行库设置为“多线程 DLL (/MD)”;
4.C++项目引用C库,忘记加extern "C"{}
假设项目A为C++项目,而引用库a.lib全部由C语言编写,包含头文件时需要加上extern "C"{},表示按照C的调用规则传参,如下所示:
extern "C" {
#include "a.h "
}#pragma comment(lib,"a.lib")
void main(){
func1();
}
-
VS2019 无法解析的外部符号 main
2020-06-08 11:48:52提示 无法解析的外部符号 main。检查代码后没有发现有错。奇怪,哪里出问题了? 测试 无奈,直接右键移除了,编译,然后出错,出现一样的提示(当然了,pch里面没有main函数,报错很正常)。然后在源文件上右键添加...
在源文件里直接右键添加一个新项cpp文件6.3.1.cpp,然后写了一点简单的代码,编译后
提示 无法解析的外部符号 main。检查代码后没有发现有错。奇怪,哪里出问题了?测试
无奈,直接右键移除了,编译,然后出错,出现一样的提示(当然了,pch里面没有main函数,报错很正常)。然后在源文件上右键添加一个现有项(就是刚才的文件),编译。
没有报错,程序正确运行,😓(lll¬ω¬)分析
直接右键添加新项时,我写的是6.3.1,因为有小数点,程序没有在后面自动补上.cpp后缀,在编译前发现了,重命名加上了.cpp后缀。然后,编译 报错。
(但是,为什么?嘛,Windows的事情谁说的清楚呢 嗯~ o( ̄▽ ̄)o ) -
VS-Qt报错-无法解析的外部符号:qt_metacall metaObject
2022-03-13 19:58:11最近遇到了个诡异问题,移植代码到另一个版本,qt代码怎么也编不过去。之前忙,就放着,最近处理,查了很多资料。 这个问题一般是没有产生对应的moc_xx.cpp,所以需要找到产生moc__xx这个文件的头文件,把类里Q_... -
解决error LNK2001 无法解析的外部符号 int __cdecl sprintf
2021-01-22 20:07:53解决error LNK2001 无法解析的外部符号 int __cdecl sprintf -
VS报错信息:无法解析的外部符号(该符号为自己其他项目里定义的)
2020-07-13 11:26:25如果外部符号是这个解决方案的其他项目里的定义的话,就应该可以使用这个方法 先打开无法解析的地方,就是后面项目括号里写的,找到同名生成前的文件,然后把无法解析的地方f12追过去,找到打开该文件的位置,看看在... -
VS2017 无法解析的外部符号
2018-12-24 22:20:57通常是lib文件没包含进去的原因。进行以下三步: 1.检查库目录是否有lib文件所在的文件目录 2.在源文件开头定义#pragma comment(lib,"xxx.lib") 3.如下图所示,在附加依赖项中假如库文件路径。... -
VS编译出现无法解析的外部符号:qt_metacall metaObject(void) const qt_metacast
2021-12-14 23:06:14背景:将qt源码移植到自己项目里的过程中,出现了一大堆无法解析的外部符号以及一堆的link错误,接下来我会从各个方面一一分析每种错误产生的原因 Qt-moc简单介绍:Qt 不是使用“标准的”C++语言编写,而是对其进行... -
关于vs配置OpenGL及其他库时出现的无法解析外部符号问题可能原因的解决
2020-05-07 13:03:24注意解决方案平台使用选用的是32位的还是64位的 这一步引入包含目录以及库文件的操作网上教程已有很多,此处不再赘述 需要注意此处选择的平台如果是32位,则调试过程中也要选择x86;64位同理 ... -
使用VS2017进行C++运行提示无法解析的外部符号
2019-04-13 17:09:57![图片说明]... #include #include #pragma comment(lib,"legacy_stdio_definitions.lib") ...using namespace cv;...int main(int argc, char** argv) { ...``` -
vs 关于各种无法解析的外部符号问题的相应解决方案
2018-10-29 12:37:22转载 https://blog.csdn.net/enotswn/article/details/5934938 -
vs报错“错误 LNK2019 无法解析的外部符号”的几种原因及解决方案
2021-03-28 13:19:16运行vs程序的时候,报错严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2019 无法解析的外部符号 "__declspec(dllimport) public: void __cdecl PointCloudFilter::setptClouds(struct LAS_POINT *)" (__... -
vs error 无法解析的外部符号 _main,该符号在函数 “int __cdecl invoke_main
2021-05-28 21:03:09原因分析 出现这种问题的原因,有很多种,第一种也是最...出现警告说明你属于这一种情况,你需要在vs的文件菜单里找到高级保存选项(vs高版本需要在设置里调出来,不会的百度搜),然后选择window(CR LF),即window -
VS在编译后.obj文件出现错误 error LNK2019: 无法解析的外部符号 的一种可能
2021-05-27 15:26:34若有包含其他库,且规模较大,在写自己的代码时尽量避免把代码放在如小写 “common” 这种常见名字的文件夹内,否则容易出现编译成功,但.obj文件找不到某个函数导致错误LNK2019 -
C++之Error无法解析的外部符号
2021-09-28 15:00:24文章目录C++之VisualStudio的使用遇到问题解决问题一 无法解析的外部符号问题二 无法打开文件lib问题三 debug不可以运行,release可以运行 问题一 无法解析的外部符号 [问题描述] 在编译中遇到,viaual studio无法... -
VS+Qt报错无法解析的外部符号
2020-11-03 16:48:10全部都是无法解析的外部符号,上网上搜索了下,大部分是说链接器的问题,可我所有的库目录以及库文件都配置完成了。后来我上微软的报错网站上去看,基本上也是说链接器的问题。 后来我突然想到以前是因为Qt的宏 Q_... -
nasm使用extern关键字无法解析外部符号
2021-08-15 16:20:41} asm文件内容如下 global test extern a section .text test: mov eax,a ret 报错内容为 LNK2001 无法解析的外部符号 a LNK1120 1 个无法解析的外部命令 试过引用函数也会出现同样错误 上网搜半天也没搜到个解决... -
c++ 链接mysql:error LNK2019: 无法解析的外部符号
2021-04-28 01:54:32使用VS2012编译项目报错如下:error LNK2019: 无法解析的外部符号 _mysql_real_connect@32,该符号在函数 _main 中被引用error LNK2019: 无法解析的外部符号 _mysql_query@8,该符号在函数 _main 中被引用error LNK... -
VS配置PCL“无法解析外部符号”
2020-08-18 10:25:30一开始报错: 一般原因是没有包括需要的 .lib 报错说明可能出现在vtk 和pcl_visualization 的lib上。在依赖库中添加pcl_visualization.lib 或者在.cmake文件中添加visualization重新编译,如下: ... -
VS编译过程中出现无法解析的外部符号namespace解决方法
2021-03-03 17:25:29error LNK2001: 无法解析的外部符号 namespaces 解决方法 添加WITH_NONAMESPACES 就好了。 -
VS常见错误之一:LNK2019 : 无法解析的外部符号
2021-11-26 23:59:05LNK2019 : 无法解析的外部符号 xxx 中被引用 采用开源程序,忘记添加依赖项,这个是最常见的问题。解决办法如下: 右键打开项目属性 C/C++、附加包含目录:填写附加头文件所在目录 分号间隔多项 链接器、... -
LNK2001:无法解析外部符号_sprintf
2021-11-18 16:01:57从网上下载一个VS的demo,编译之后老是报 LNK2001:无法解析外部符号_sprintf的错误,找了好久,发现 在项目属性->链接器->输入->附加目录依赖项添加 legacy_stdio_definitions.lib 即可解决问题。 但... -
VS 出现LIK2001:无法解析外部符号几种情况及解决办法
2019-11-01 20:05:25在开始这个话题之前,非常想吐槽一下VS 2010,因为今天在封装一个静态库时就出现了这个情况,之前也是遇到过这个情况,以为是跟以往出现的情况是一样的,按照着往常的解决思路查找了一遍问题所在,发现完全没有问题... -
VS2015无法解析外部符号
2016-12-06 12:39:22在使用VS编辑C++时,遇到了无法解析外部符号的错误 严重性 代码 说明 项目 文件 行 错误 LNK2019 无法解析的外部符号 "public: __thiscall Employee::Employee(void)" (??0Employee@@QAE@XZ),该符号在... -
VS C++上报错“无法解析的外部符号” 最最可能的情况
2020-07-16 10:44:49大家写程序的有时候把inlcude、lib以及附加依赖项都配置好了,但是运行的时候还是报错了,无法解析的外部符号。。。这是让人很奔溃的。但是有没有大家没有把最不起眼的环境修改了。没错 就是它,是不是这个环境没... -
vs2019无法解析外部符号__imp__fprintf
2020-06-29 15:29:07解决方法: 在链接器输入lib里加上legacy_stdio_definitions.lib这个LIB -
无法解析的外部符号main
2021-08-29 16:21:17今天在写程序的时候遇到个问题: 然后就去看了相应的解决方法 发现都不管用: 1.不是文件名.c或.cpp的问题 2.不是没有包含相应头文件的问题 3.不是写的控制台程序而使用的Windows连接程序(Winmain) ...