求助,qt编译器出现“无法解析的外部符号”错误

匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。Qt编程浅尝(79)
原文地址:http://blog.csdn.net/hyqsong/article/details/(谢谢原作者总结和分享)
问题来自于:只是在creator 中添加了一个新的DIalog类,并在main(),中实例化并show,就出现如下的错误:
main.obj:-1: error: LNK2019: 无法解析的外部符号 &public: __cdecl Dialog::Dialog(class QWidget *)& (??0Dialog@@QEAA@PEAVQWidget@@@Z),该符号在函数 main 中被引用
main.obj:-1: error: LNK2019: 无法解析的外部符号 &public: virtual __cdecl Dialog::~Dialog(void)& (??1Dialog@@UEAA@XZ),该符号在函数 main 中被引用
debug\DockWindows.exe:-1: error: LNK1120: 2 个无法解析的外部命令
先说我的问题的解决办法: 就是重新qmake一下,然后重新构建就可以了。(PS:因为我的头文件都是可以正常include进来的)
另外一些 可能解决“无法解析外部符号”的方法是:
1. & 检查.是否有定义了的SOLT 函数没有实现?
2.&& 检查Qt的库lib有没有正确的添加包含进来(具体可参考Qt配置教程)(PS: 头文件都无法识别也可能是这个原因)。
C++编程技术交流群:(学习是一个互相帮助、不断进步的过程;不论你是大牛还是菜鸟,都期待你的加入)
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:167906次
积分:4376
积分:4376
排名:第5190名
原创:221篇
转载:48篇
评论:156条
文章:24篇
阅读:21698
阅读:5403
文章:21篇
阅读:13328
(14)(18)(12)(10)(19)(24)(34)(32)(30)(11)(26)(11)(9)(5)(13)(2)(1)无法解析的外部符号出现可能的原因:
[0]出现无法解析可能是因为lib文件不正确,比如64位的编译配置,结果使用的是32位的lib包.
[1]只写了类声明,但还没有写实现类,造成调用时无法解析
[2]声明和定义没有统一,造成链接不一致,无法解析
[3]没有在项目属性页的链接器的命令行选项加入相应的类包。
[4]没有在c++包含目录和库目录加入相应的类包路径
[5]在测试工程中被测文件目录可能需要包含被测类的cpp定义文件
[6]ICE接口测试时,无法解析可能因为被测文件没有包含进相关的cpp文件,另外,在TestSuite_ProjectRun.h文件中需要包含IProjectRun.h头文件,及相关的头文件(举例)。
[7]import相关的无法解析内容,解决办法是在链接器的依赖项中加入相应的动态库
[8]出现如下错误的原因一般是动态库没有包进来。__imp
ProjectRun.obj : error LNK2019: 无法解析的外部符号 __imp__StartHistoryLocalModule,该符号在函数 “protected: virtual int __thiscall HiRTDB::CProjectRun::DoStart(void)” (?DoStart@CProjectRun@HiRTDB@@MAEHXZ) 中被引用
[9]error LNK2001: 无法解析的外部符号 __imp___CrtDbgReportW
工程属性,C/C++,代码生成,运行时库选择MDd,
[9]无法解析的外部符号”_declspec(dllimport) public: int __thiscall HiRTDB::CTagTree::GetObjectA(int,struct HiRTDB::SBaseReadProps const &,struct HiRTDB::SBaseReadValues &)” (__imp GetObjectA@CTagTree@HiRTDB@@QAEHHABUSBaseReadProps@2@AAUSBaseReadValues@2@@Z),该符号在函数”public: int __thiscall HiRTDB::CStringImpl::Get(int,struct HiRTDB::SStringReadProps const &,struct HiRTDB::SStringReadValues &)” (?Get@CStringImpl@HiRTDB@@QAEHHABUSStringReadProps@2@AAUSStringReadValues@2@@Z) 中被引用
原因可能是工程配置文件中有多余选项,请参考其他模块的配置选项,不要有多余配置。
自己编了个小程序,一开始编译忘记在.pro工程中加入类库,所以导致出现如下图所示错误,加上类库后清除重新编译,发现还是同样的错误,百思不解,搜百度有网友提议删除目录下生成的调试文件夹,然后尝试过后发现此方法可行,这里做个记录,以防以后又发生这样的错误
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:10954次
排名:千里之外
原创:11篇
转载:14篇
(1)(2)(2)(2)(1)(2)(3)(1)(2)(7)下次自动登录
现在的位置:
问题现象:
1&------ 已启动全部重新生成: 项目: QT_RAD_HelloWorld, 配置: Debug Win32 ------
1&  Moc'ing mainwindow.h...
1&  Uic'ing mainwindow.ui...
1&  main.cpp
1&  mainwindow.cpp
1&  正在生成代码...
1&mainwindow.obj : error LNK2001: 无法解析的外部符号 &public: virtual struct QMetaObject const * __thiscall MainWindow::metaObject(void)const & ()
1&mainwindow.obj : error LNK2001: 无法解析的外部符号 &public: virtual void * __thiscall MainWindow::qt_metacast(char const *)& ()
1&mainwindow.obj : error LNK2001: 无法解析的外部符号 &public: virtual int __thiscall MainWindow::qt_metacall(enum QMetaObject::Call,int,void * *)& ()
1&E:\work\QT\study\zhangsk\QT_RAD_HelloWorld\\QT_RAD_HelloWorld.exe : fatal error LNK1120: 3 个无法解析的外部命令
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========
发生该情况的说明:
原本可以编译的程序,在改动了slot内的代码后ReBuild出现该问题。
原因分析:
moc_mainwindow.cpp这类moc_开头的文件在VC下没有重新生成导致。
解决方法:
将Project中的Generated Files目录下的moc_mainwindow.cpp文件移除,再重新添加。然后重新ReBuild即可。
【上篇】【下篇】
您可能还会对这些文章感兴趣!
百度站内搜索
同分类最新文章

我要回帖

更多关于 qt无法解析的外部符号 的文章

 

随机推荐