VC++常见错误原因解析--error LNK2019: 无法解析的外部符号 "public: void __thiscal

转载 2018年04月17日 11:08:58

出现这个错误,应该首先查看“#include”语句是否包含,或者是否包含正确。符号无法解析意味着编译器知道有这个符号存在,也就是有声明,但在链接时,找不到实现代码,那么就去看看报错的这个函数有没有实现代码。如果它们的确已经有了,还是出现这个错误,就把它们重新编译一下。

根据个人遇到这个错误时的记录,原因可以分为一下几种:

原因一:只是在.h里面声明了某个方法,没有在cpp里面实现
具体讲,有时候在头文件中声明了需要的方法,确实忘记了在源文件中实现;
有时候在头文件中声明了需要的方法,在源文件中实现了该方法,但是却遗留了方法名前的“classname::”;
有时候在头文件中声明并实现了需要的方法,但是在代码调整时直接把方法copy到源文件时,并没有在函数前加“classname::”;


原因二:声明和实现都有了,但是没有添加到vs的project目录下面,这时候如果在其他.cpp中引用的,就会出现这个错误。
具体讲,导入自己以前的代码或其他现有代码时,复制到工程下目标文件夹后,有时候会在vs的project目录下忘记或遗漏添加这些文件,就可能引起这个错误。


原因三:有时候工程比较大时,会直接加入一些原有的基础工程来提交效率,如果对原有工程不太熟悉,在工程中加入了有相同名字的文件或者类时,同样会引起这个问题。
这种情况下的具体原因是编译时会出现相同名字的中间文件,因为编译有先后顺序,出现了文件替换,在其他文件引用被替换掉的文件时,导致最后会出现了个连接问题。


原因四:内联函数相关,如果内联函数的声明在头文件中,实现在源文件中,这时候如果其他类中只是包含了头文件,在调用这个内联函数时也会出现这个问题。此时把函数实现放到头文件中,或者把.cpp也include进来,就可以解决问题。


原因五:如果这个类是动态库中定义的类,可能是因为没有把这个动态库对应的.lib文件加到工程中。


VC++常见错误原因解析--error LNK2019: 无法解析的外部符号 "public: void __thiscall

error LNK2019: 无法解析的外部符号 "public: void __thiscall 这种常见错误产生的几种原因解析...
  • u012543266
  • u012543266
  • 2014-03-26 10:14:38
  • 4655

error LNK2019:无法解析的外部符号 public: void(找前面的函数)

error LNK2019:无法解析的外部符号 public: void(找前面的函数)
  • duan19920101
  • duan19920101
  • 2016-03-30 18:31:56
  • 6073

error LNK2019: 无法解析的外部符号 "public: void __thiscall

错误信息: error LNK2019: 无法解析的外部符号 "public: void __thiscall CArcBall::setBounds(int,int)" (?setBounds@C...
  • zsdt345a780rfajwet
  • zsdt345a780rfajwet
  • 2012-12-06 20:17:23
  • 16518

错误5error LNK2019: 无法解析的外部符号 "public: virtual __thiscall CvvImage::~CvvImage(void)" (??1CvvImage@@U

错误处理: 1、将CvvImage.h和CvvImage.cpp分别添加现有项到Header Files和Source Files中; 2、在调用文件中添加头文件#include "CvvImag...
  • dianfeng0344
  • dianfeng0344
  • 2016-07-01 14:55:34
  • 3336

QT中异常退出或者mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __thiscall scriptDlg::scriptDlg(class

请先把已经存在的debug和release文件夹删除,重新编译,看会不会再出现这个问题; 如果还在出现,那绝对说明你的一些成员函数只有声明没有实现,或者两者不一致。...
  • qq_37284195
  • qq_37284195
  • 2017-03-05 14:32:44
  • 4861

编译遇到问题该如何解决?“error LNK2019: 无法解析的外部符号”

错误 23 error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall seeta::FaceAlignment::~Fac...
  • maomaomao425
  • maomaomao425
  • 2017-04-07 16:16:46
  • 2038

Qt error:LNK2019----1

Qt error LNK2019
  • ht654868961
  • ht654868961
  • 2016-12-29 19:20:52
  • 639

错误 4 error LNK2019: 无法解析的外部符号 "public: __thiscall CRobotProvider::~CRobotProvider(void)" (??1CRobotP

错误 4 error LNK2019: 无法解析的外部符号 "public: __thiscall CRobotProvider::~CRobotProvider(void)" (??1CRobo...
  • boylinux
  • boylinux
  • 2012-08-02 18:22:12
  • 8449

error LNK2019: 无法解析的外部符号 六处错误的纠正

错误    18    error LNK2019: 无法解析的外部符号 "public: void __thiscall cv::FeatureDetector::detect(class cv::...
  • tangshuai8888
  • tangshuai8888
  • 2015-08-04 15:05:22
  • 4546

【C++】error LNK2019: 无法解析的外部符号 "public: void __thiscall

出现这个错误,应该首先查看“#include”语句是否包含,或者是否包含正确。符号无法解析意味着编译器知道有这个符号存在,也就是有声明,但在链接时,找不到实现代码,那么就去看看报错的这个函数有没有实现...
  • Taily_Duan
  • Taily_Duan
  • 2016-12-16 14:01:44
  • 1501
收藏助手
不良信息举报
您举报文章:VC++常见错误原因解析--error LNK2019: 无法解析的外部符号 "public: void __thiscal
举报原因:
原因补充:

(最多只允许输入30个字)