为何vs2013安装qt后,编译不通过

时间:2022-09-23 18:13:03
如题,电脑是64位系统,安装了vs2013,安装了qt5.4和qt5.5,以及插件,但是用向导建立Qt Application工程,自动生成后,却练级不通过,报错如下

1>qttest.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl QTTest::metaObject(void)const " (?metaObject@QTTest@@UEBAPEBUQMetaObject@@XZ)
1>qttest.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __cdecl QTTest::qt_metacast(char const *)" (?qt_metacast@QTTest@@UEAAPEAXPEBD@Z)
1>qttest.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __cdecl QTTest::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QTTest@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)
1>C:\vsQT\QTTest\x64\Debug\\QTTest.exe : fatal error LNK1120: 3 个无法解析的外部命令


网上找了这个,也有人遇到过,说什么编译出一个moc_xx.cpp就可以,我的工程能自动生成那个,但却是空白的,估计就是这个导致的,想问下有没有解决的办法,至于说通过xx.h编译生成moc_xx.cpp,我也试过,但这个moc_xx.cpp文件依然是空白无内容的,请问这个是什么原因?但是我建立的console工程,却是可以使用的

9 个解决方案

#1


额,写错了一点,是链接不通过~

#2


我也遇到过这个问题,不生成moc文件。
我当时是建的QT4的工程,然后使用QT5打开,编译,导致不能正常生成moc文件。
最后是重新使用QT5新建工程才正常。具体原因,估计就是QT版本冲突吧。

#3


引用 2 楼 u011417605 的回复:
我也遇到过这个问题,不生成moc文件。
我当时是建的QT4的工程,然后使用QT5打开,编译,导致不能正常生成moc文件。
最后是重新使用QT5新建工程才正常。具体原因,估计就是QT版本冲突吧。

额,我本来安装了5.4的,网上找了好多都是那个方法,关键是我照着那个方法一样生成的是空白的moc文件,后来同事说下了最新的,我以为是我安装有问题,就又安装了最新的,但是依然报这个错误,不知道是不是64位的问题,难不成大家一安装再设置一下就可以直接使用而且没报错?捣鼓了两天没结果~~~

#4


可能是moc失效了。

#5


我也是VS2013写的。。 不过我写的好好的啊,你安装好后还需要搞一些设置。配置好了才能正常编写代码。 如何配置可以从百度搜素  QT vs2013 安装等关键子。。。

#6


引用 5 楼 void_main_void 的回复:
我也是VS2013写的。。 不过我写的好好的啊,你安装好后还需要搞一些设置。配置好了才能正常编写代码。 如何配置可以从百度搜素  QT vs2013 安装等关键子。。。

额,肯定配置了,不配置根本就运行不了,我是链接出错。而且是用向导生成的,一句代码都还没写,就报链接错误; QT5.5 5.4都安装了,都是是vs2013_64版本的,插件是qt-vs-addin-1.2.4-opensource, 操作系统是win7_64位,vs2013是Ultimate 2013 update4

#7


引用 4 楼 jiangcaiyang123 的回复:
可能是moc失效了。

我也觉得是,我查看了下QT的帮助手册,moc_xx.cpp是应该有内容的,而我生成的却是空白文档~但是按照网上的方法用vs2013通过编译xx.h的方式也是生成的是空白的文档~~~~~

#8


额, 不好意思麻烦各位了,找来找去原来是cpp h文件加密的原因~~~~唉,坑……

#9


重新qmake一下就可以了吧。

#1


额,写错了一点,是链接不通过~

#2


我也遇到过这个问题,不生成moc文件。
我当时是建的QT4的工程,然后使用QT5打开,编译,导致不能正常生成moc文件。
最后是重新使用QT5新建工程才正常。具体原因,估计就是QT版本冲突吧。

#3


引用 2 楼 u011417605 的回复:
我也遇到过这个问题,不生成moc文件。
我当时是建的QT4的工程,然后使用QT5打开,编译,导致不能正常生成moc文件。
最后是重新使用QT5新建工程才正常。具体原因,估计就是QT版本冲突吧。

额,我本来安装了5.4的,网上找了好多都是那个方法,关键是我照着那个方法一样生成的是空白的moc文件,后来同事说下了最新的,我以为是我安装有问题,就又安装了最新的,但是依然报这个错误,不知道是不是64位的问题,难不成大家一安装再设置一下就可以直接使用而且没报错?捣鼓了两天没结果~~~

#4


可能是moc失效了。

#5


我也是VS2013写的。。 不过我写的好好的啊,你安装好后还需要搞一些设置。配置好了才能正常编写代码。 如何配置可以从百度搜素  QT vs2013 安装等关键子。。。

#6


引用 5 楼 void_main_void 的回复:
我也是VS2013写的。。 不过我写的好好的啊,你安装好后还需要搞一些设置。配置好了才能正常编写代码。 如何配置可以从百度搜素  QT vs2013 安装等关键子。。。

额,肯定配置了,不配置根本就运行不了,我是链接出错。而且是用向导生成的,一句代码都还没写,就报链接错误; QT5.5 5.4都安装了,都是是vs2013_64版本的,插件是qt-vs-addin-1.2.4-opensource, 操作系统是win7_64位,vs2013是Ultimate 2013 update4

#7


引用 4 楼 jiangcaiyang123 的回复:
可能是moc失效了。

我也觉得是,我查看了下QT的帮助手册,moc_xx.cpp是应该有内容的,而我生成的却是空白文档~但是按照网上的方法用vs2013通过编译xx.h的方式也是生成的是空白的文档~~~~~

#8


额, 不好意思麻烦各位了,找来找去原来是cpp h文件加密的原因~~~~唉,坑……

#9


重新qmake一下就可以了吧。