解决error LNK2019: 无法解析的外部符号 "public: __thiscall... error LNK2018等经典的错误

分享到:
  来源:急速科技  发布时间:2013-07-24  浏览次数:14727

  error LNK2018 error LNK2019 无法解析的外部符号 0A000048

     刚学C++不久,今天在VS2012下测试一个项目调用另外一个项目;结果出现  error LNK2019: 无法解析的外部符号 "public: __thiscall 。。。的错误。这个估计在C++中应该算是很经典的错误吧!

通过狂搜百度,统一的说在xx.cpp中没有实现xxx.h中定义的方法;以下引用网上的解决方法:

错误 2 error LNK2019: 无法解析的外部符号 "public: long __thiscall Hotel_sqlite3::InsertRoomType(char *,int,int,char *,char *,char *,int)" (),该符号在函数 "public: long __thiscall MainMenu::Fwgl_Roomstandard(void)" () 中被引用 MainMenu.obj Hotel_Management

遇到这样的问题再网上找了一些答案,解决了问题,在此记录一下

最佳答案首先可以肯定地告诉你,出现这种错误,原因不在于编程平台或者编译器的某些文件,是你自己程序有问题。请检查一下自己的程序。上面提到的那几个函数,可能在你的class KSwordOnLineSever类里面定义了,但它的实现部分还没有写,看看是不是忘了?看看你是不是犯了如下所示的错误:class a{int x;public:void set(int p);};/*漏掉函数的实现部分:void a::set (int p){x = p;}*/这种错误不会在编译时被显示,因为它符合语法规则,但无法build!

       但是在两个文件中查看了半天,确认全部实现了,看来应该不是这个问题了;后来突然想到上次在编译 JSONCpp源码的过程中修改了 配置=> c/C++ =>代码生成器=>运行库中的选项,会不会是这个问题呢?比对了两个项目中的值,确实不一样,吧OA.Core中的值修改成TestSQLite项目中的值,编译,链接 一切正常!

C++中什么问题都有可能发生,对于新手来说确实很痛苦。

第二种:error LNK2018   error LNK2019

这种错误一般是没有实现头文件中的接口;注意检查下。

第三种:error LNK2018   error LNK2019  无法解析的标记(0A000048)

调用第三方接口时:头文件的命名空间被人为的修改了,导致与原始的lib,DLL文件中的命名空间不符。解决办法重新吧接口中的头文件修改为正确的命名空间

 

知识文章分类

C/C++

阅读排行