qt中出现库函数无法解析的外部符号

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/joorey/article/details/48553627

一般情况下我们在写一个C++程序的时候,如果在头文件中声明了一个成员函数  例如 setDate();

,但是没有定义的话,编译的过程中会提示  setDate()有无法解析的外部符号。这是很常见的一种现象。


但是在qt中会发现有些库函数会存在无法编译或者提示无法解析的外部符号,这种情况只有一个,就是库路径没有添加。

今天在写一个Qt的xml文件的时候,就出现一个库函数无法解析的外部符号。

那么如何解决这个问题呢?


以VS2008中的一个项目Xmlstreamreader为例,右击项目名称Xmlstreamreader,在最下面会出现“属性”一栏,然后点击属性。




出现了Xmlstreamreader属性页



再点击C/C++,在右边会出现“附加包含目录”,点击进去添加$(QTDIR)\include\QtXml,


点击确定。


再点击链接器——输入


右边出现"附加依赖项",点击进去。



添加QtXml4.lib。

最后点击确定,然后应用即可编辑通过。






展开阅读全文

C++出现无法解析外部符号

12-21

我换了一个文件夹,就是目录换了一个,换为该路径:rnE:\源码\C++\Projects-----------------这个是编译成功的rnrn之前的路径是:rnE:\源码\C++\自练题-------------------这个是编译失败的rnrn为什么会这样啊?rnrn我是根据 c++primer plus 第六版 的代码写的,目前我找不到原因,为什么会这样,在第十一章,410页rn代码如下rn[code=c]//stonewt.hrn#ifndef STONEWT_H_rn#define STONEWT_H_rnclass Stonewtrnrnprivate:rn enum Lbs_per_stn = -14;rn int stone;rn double pds_left;rn double pounds;rnpublic:rn Stonewt(double lbs);rn Stonewt(int stn , double lbs);rn Stonewt();rn ~Stonewt();rn void show_lbs() const;rn void show_stn() const;rn rn;rn#endif[/code]rnrn[code=c]//stonewt.cpprn#include rnusing std::cout;rn#include "程序清单11.16 stonewt.h"rn rnStonewt::Stonewt(double lbs)rnrn stone = int (lbs) / Lbs_per_stn;rn pds_left = int (lbs) % Lbs_per_stn + lbs - int(lbs);rn pounds = lbs;rnrn rnStonewt::Stonewt(int stn , double lbs)rnrn stone = stn;rn pds_left = lbs;rn pounds = stn * Lbs_per_stn + lbs;rn rnrn rnStonewt::Stonewt()rnrn stone = pounds = pds_left = 0;rnrn rnStonewt::~Stonewt()rnrn rnrn rn rnvoid Stonewt::show_stn() constrnrn cout << stone << " stone, " << pds_left << " pounds\n";rnrn rnvoid Stonewt::show_lbs() constrnrn cout << pounds << " pounds\n";rn[/code]rnrn[code=c]//stone.cpprn#include "程序清单11.16 stonewt.h"rn#include rnusing std::cout;rn rnvoid display(const Stonewt & st , int n);rn rnint main()rnrn Stonewt incognito = 275;rn Stonewt wolfe(285.7);rn Stonewt taft(21 , 8);rn rn std::cout << "The celebrity weighed ";rn incognito.show_stn();rn std::cout << "The detective weighed ";rn wolfe.show_stn();rn std::cout << "The President weighed ";rn taft.show_lbs();rn incognito = 276.8;rn taft = 325;rn std::cout << "After dinner , The celebrity weighed ";rn incognito.show_stn();rn std::cout << "After dinner , The President weighed ";rn taft.show_lbs();rn display(taft , 2);rn std::cout << "The wrestler weighed even more.\n";rn display(422 , 2);rn std::cout << "No stone left unearned\n";rn rn system("pause");rn return 0;rnrn rnvoid display(const Stonewt & st , int n)rnrn for (int i = 0; i < n; i++)rn rn std::cout << "Wow! ";rn st.show_stn();rn rn[/code]rnrn这是错误rn错误 1 error LNK2019: 无法解析的外部符号 "public: void __thiscall Stonewt::show_lbs(void)const " (?show_lbs@Stonewt@@QBEXXZ),该符号在函数 _main 中被引用 E:\源码\C++\自练题\11程序清单11.6\11程序清单11.6\程序清单11.18 stone.objrn错误 2 error LNK2019: 无法解析的外部符号 "public: void __thiscall Stonewt::show_stn(void)const " (?show_stn@Stonewt@@QBEXXZ),该符号在函数 _main 中被引用 E:\源码\C++\自练题\11程序清单11.6\11程序清单11.6\程序清单11.18 stone.objrn错误 3 error LNK2019: 无法解析的外部符号 "public: __thiscall Stonewt::Stonewt(int,double)" (??0Stonewt@@QAE@HN@Z),该符号在函数 _main 中被引用 E:\源码\C++\自练题\11程序清单11.6\11程序清单11.6\程序清单11.18 stone.objrn错误 4 error LNK2019: 无法解析的外部符号 "public: __thiscall Stonewt::Stonewt(double)" (??0Stonewt@@QAE@N@Z),该符号在函数 _main 中被引用 E:\源码\C++\自练题\11程序清单11.6\11程序清单11.6\程序清单11.18 stone.objrn错误 5 error LNK1120: 4 个无法解析的外部命令 E:\源码\C++\自练题\11程序清单11.6\Debug\11程序清单11.6.exe 论坛

没有更多推荐了,返回首页