vs2010+qt4编译出现error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject等错误

1、当vs2010编译qt时会出现以下错误:

1>------ 已启动全部重新生成: 项目: MyDialog, 配置: Debug Win32 ------

1>生成启动时间为 2015/9/9 14:57:04。

1>InitializeBuildStatus:

1>  正在创建“Debug\MyDialog.unsuccessfulbuild”,因为已指定“AlwaysCreate”。

1>CustomBuild:

1>  Moc‘ing LoginDlg.h...

1>ClCompile:

1>  LoginDlg.cpp

1>  main.cpp

1>  正在生成代码...

1>LoginDlg.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall CLoginDlg::metaObject(void)const " (?         [email protected]@@[email protected]@XZ)

1>LoginDlg.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall CLoginDlg::qt_metacast(char const *)" ([email protected]@@[email protected])

1>LoginDlg.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall CLoginDlg::qt_metacall(enum QMetaObject::Call,int,void * *)" ([email protected]@@[email protected]@@[email protected])

1>D:\VC++\QtT\MyDialog\\MyDialog.exe : fatal error LNK1120: 3 个无法解析的外部命令

1>

1>生成失败。

1>

1>已用时间 00:00:03.23

========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========

2、出现以上错误的原因是由于在GeneratedFiles/Debug文件中缺少一个moc_XXX.cpp文件,如下图所示:

3、缺少的文件名是什么呢?那么首先要找到Q_OBJECT宏在那个头文件中,比如在上图中该宏在LoginDlg.h文件中,那么生成的文件时moc_LoginDlg.cpp,要生成此文件需要qt库中的一个moc.exe文件,如下图所示:

4、通过cmd进入到此目录中,然后执行:moc "D:\VC++\QtT\MyDialog\MyDialog\LoginDlg.h" -o "D:\VC++\QtT\MyDialog\MyDialog\moc_LoginDlg.cpp"

如下图所示:

5、然后会在D:\VC++\QtT\MyDialog\MyDialog\目录生成一个moc_LoginDlg.cpp文件,如下图所示:

6、将moc_LoginDlg.cpp文件拷贝到GeneratedFiles/Debug目录中,并在vs中添加该文件,如下图所示:

7、重新编译即可

原文地址:https://www.cnblogs.com/lovebay/p/9337528.html

时间: 2024-10-05 22:42:20

vs2010+qt4编译出现error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject等错误的相关文章

error LNK2001: 无法解析的外部符号 "public: char * __thiscall

error LNK2001: 无法解析的外部符号 "public: char * __thiscall CamPinPadCtrl::KeysConvert(unsigned long,char *)" ([email protected]@@[email protected]) 下午有个函数重复使用的地方特别多,所以我想单独在visual studio中给类增加函数,这样每次用到的时候只需调用函数即可 但是我再.h文件中声明函数 char* KeysConvert(unsigned

C++工程编译之“error LNK2001: 无法解析的外部符号”

今天一整天都在折腾“error LNK2001: 无法解析的外部符号”,就在头疼不已的时候,总算是找到问题原因了:各个动态链接库的编译方式必须统一才行,要不然很容易对库函数的引用产生冲突.简单来说就是,如果使用的第三方函数库编译方式采用/MD,那么主工程也应该使用/MD.我使用了libevent,而主工程默认采用/MT,所以需要忽略一大堆的函数库,我还纳闷呢,怎么会这么奇怪!!今天总算是解决了长久以来的困惑了. 下面引用一篇文章的描述:[Z]VC运行库版本不同导致链接.LIB静态库时发生重复定义

vs2015编译ffmpeg 出现错误rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 ___iob_func

vs2015编译ffmpeg(版本3.0.2)引用外部库文件librtmp出现以下错误: rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 __imp__strtod rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 __imp__sscanf rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 __imp___snprintf rtmp.lib(rtmp.obj) : e

c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法

最近项目中需要实现一个服务器宕机后短信提醒的功能,个人觉得在使用Python 写http请求这块很方便,发短信这块就使用了python,但是c++程序中调用这个脚本时,编译不通过,提示如下错误: error LNK2001: 无法解析的外部符号 __imp_PyString_FromStringerror LNK2001: 无法解析的外部符号 __imp_PyCallable_Check error LNK2001: 无法解析的外部符号 __imp_PyObject_CallObjecterro

【转】strmbasd.lib(dllentry.obj) : error LNK2001: 无法解析的外部符号"int g_cTemplates"

加入了DirectShow的基类链接库后,如果此时编译就会出现以下编译错误: strmbasd.lib(wxutil.obj) : error LNK2019: 无法解析的外部符号 [email protected] strmbasd.lib(wxutil.obj) : error LNK2019: 无法解析的外部符号 [email protected] strmbasd.lib(dllentry.obj) : error LNK2001: 无法解析的外部符号 "class CFactoryTe

error LNK2001: 无法解析的外部符号

error LNK2001: 无法解析的外部符号 这个错误一般主要原因是:只在头文件中有定义,没有在cpp文件中实现.导致这个原因一般是在添加库文件的时候,仅仅只是包含了他的头文件,因此解决办法就是也应该要包含它的实现文件,如果没有.cpp文件,那么就应该是静态文件或者动态文件.只要添加了这个基本上就没问题了. error LNK2001: 无法解析的外部符号,布布扣,bubuko.com

gSoap的“error LNK2001: 无法解析的外部符号 _namespaces”解决方法

在工程中添加宏 WITH_NONAMESPACES gSoap的"error LNK2001: 无法解析的外部符号 _namespaces"解决方法

一个小错误:error LNK2019: 无法解析的外部符号 "public: __thiscall Turtle::~Turtle(void)" (??1Turtle@@QAE@XZ),该符号在函数 _main 中被引用

昨天在撸代码的时候遇到了一个十分蛋疼的错误 : 错误: 1>3.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Turtle::~Turtle(void)" (??1Turtle@@QAE@XZ),该符号在函数 _main 中被引用1>3.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Turtle::Turtle(void)" (??0Turtl

Error LNK2001 无法解析的外部符号 的几种情况及解决办法

最近遇到的关于VS里编译出现的“无法解析的外部符号”问题,在网上寻求解决办=办法时查到下面的博客内容,作者讲解的挺全面的,作为收藏以备将来查询. 原文http://blog.csdn.net/shenyulv/article/details/6699836 VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过.产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然.如果不深入地学习和理解