当前位置: 首页 > 编程技术 > 正文

解决无法解析的外部符号,该符号在函数中被引用

很多时候程序在编写后,编译可以通过,但是不能连接,

今天编写类时,在那种声明了一个析构函数,接着出现了下面的错误提示:

无法解析的外部符号 “public: __thiscall ThreadDataInfo_ScanPort::~ThreadDataInfo_ScanPort(void)” (??1ThreadDataInfo_ScanPort@@QAE@XZ),该符号在函数 “public: void * __thiscall ThreadDataInfo_ScanPort::`scalar deleting destructor'(unsigned int)” (??_GThreadDataInfo_ScanPort@@QAEPAXI@Z) 中被引用

编译可以通过。说明我的语法是没有问题的,但是不能Link。很多时候都是无法解析的外部符号的提示,但是很多是可以根据错误提示来解决的,但是这个错误和前面介绍的错误一样,编译器没有给出错误的地方,
所以只好查看 错误的详细提示,发现出现了我之前声明的析构函数的名称,于是猜测应该与这个函数有关,于是将这个析构函数注释掉
错误提示没有了,Link可以通过,于是肯定错误与声明的析构函数有关,

在反复查找的情况下,终于发现了错误的原因:
问题重现:
如果你的程序有多个文件,你在头文件里面声明了一个函数(不论是类成员函数或者是普通函数),在没有定义的情况下,在另外一个文件中调用了声明的函数,那么就会出现可以编译通过,但是不能Link,并且出现如上的错误提示,

解决方案:
将声明的函数定义后调用即可,



本文固定链接: http://kuaile.in/archives/520 | 蒲公英的博客

该日志由 蒲公英 于2012年02月24日发表在 编程技术 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 解决无法解析的外部符号,该符号在函数中被引用 | 蒲公英的博客
关键字:

解决无法解析的外部符号,该符号在函数中被引用:等您坐沙发呢!

发表评论


You must enable javascript to see captcha here!

快捷键:Ctrl+Enter