MyClass::元对象VS2005的Qt链接问题
Qt Link Issue with MyClass::metaobject VS2005
就在我开始之前,我在SO和谷歌上搜索了很长一段时间,试图解决这个问题,但没有成功。
我正在尝试编译我的项目,该项目过去使用某个库来提供基于Windows窗体的GUI功能。现在我的公司已经开始转向Qt,我决定开始转换我的小型应用程序来支持Qt。
起初,由于缺少头,它根本不会编译。现在已经排序了,由于以下错误,我的最终.exe无法链接。
Creating library BinVS_V8Win32DebugDisp.lib and object BinVS_V8Win32DebugDisp.exp
QtMainMenu.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall QtMainMenu::metaObject(void)const " (?metaObject@QtMainMenu@@UBEPBUQMetaObject@@XZ)
QtMainMenu.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall QtMainMenu::qt_metacast(char const *)" (?qt_metacast@QtMainMenu@@UAEPAXPBD@Z)
QtMainMenu.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall QtMainMenu::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QtMainMenu@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
BinVS_V8Win32DebugDisp.exe : fatal error LNK1120: 3 unresolved externals
我们公司有一个小的"Qt测试应用程序",它是为了玩而写的,这就是我导入的基础。我可以很好地编译和链接。根据我所收集的,以下属性必须符合Qt文件:
- 确保包含QTDir
- 将UIC编译器添加到UI文件中
- 将资源编译器添加到资源文件
- 将MOC编译器添加到创建的头文件中
我注意到我缺少MOC构建工具命令,所以我将它们添加到了UI文件的头中。然而,这并没有改变链接问题。我读到我应该删除所有构建的文件并进行清理以解决它。这也不起作用。
我已经检查过了,Q_OBJECT是在类中定义的。
我将VS2005与Qt Addin一起使用。我没有为Qt启动一个新项目,但是,我只是使用旧的Visual Studio解决方案/VCProj。
有什么想法下一步该去哪里吗?
@Cameron Stubber您需要moc
对象。。您需要修改自定义生成步骤。
右键单击可以在头文件(有Q_OBJECT)Properties
中找到Custom Build Step
。然后键入以下命令;
Command Line = $(QTDIR)binmoc.exe -I"$(QTDIR)includeQtCore" -I"$(QTDIR)includeQtGui" -I"$(QTDIR)include" -I"$(QTDIR)mkspecs$(QMAKESPEC)" finddialog.h -o debugmoc_finddialog.cpp
Description = MOC finddialog.h
Outputs = debugmoc_finddialog.cpp
Additional Dependencies = $(QTDIR)binmoc.exe;finddialog.h
但仔细地写下这些类型,你需要在这里改变一些东西,比如$(QTDIR)
,这是我的环境变量,你需要写下QT所在位置的完整形式,比如D:qt_5
而且你需要小心finddialog
你应该写你的.h and .cpp
文件名
然后,您需要右键单击解决方案资源管理器AddNew Filter
来创建一个文件夹。。将文件夹名称设为Generated Files
最后一步,右键单击Generated Files
添加\现有项,您将在解决方案项目中看到调试文件夹,并添加moc_"projectName".cpp
然后重新构建您的解决方案。问题将得到解决。
您还应该添加C/C++/通用/附加库目录
$(QTDIR)include
$(QTDIR)includeQtGui
$(QTDIR)includeQtCore
和链接/通用/附加图书馆目录
$(QTDIR)lib
链接/输入/附加依赖
qtmaind.lib
QtCored4.lib
QtGuid4.lib
但不要忘记将$(QTDIR)
更改为enviroment variables
或qt文件夹的位置。类似D:qt_4.7.4
- Qt creator 4.11,在应用程序输出面板中创建一个链接
- Libharu 解释 QT c++ 中的链接
- Qt5 C++将新窗口与Qt设计器链接
- 确定Qt库链接
- Qt & Firebase C++ SDK 在 iOS 上的链接问题
- 在Qt中链接具有非标准名称的lib文件
- CMake Qt建立在Windows链接器问题之上
- libGL确实存在,但链接器找不到它 - Qt 4.8.7,CentOS 7.5
- 静态链接MSVC库,动态链接Qt
- 将Qt应用程序与CMake和Visual Studio链接起来
- 静态Qt链接版本,Qt 5.2,QT中的未知模块:快速qml
- Qt链接问题
- CGAL Qt 链接器错误
- qt链接器错误,从另一个线程发出信号
- 将类添加到基本Qt GUI应用程序时出现Qt链接器错误
- Ubuntu Qt链接提升日志
- MyClass::元对象VS2005的Qt链接问题
- Qt链接器错误窗口
- Qt:链接我的模型数据与QListView
- Q_OBJECT相关的qt链接错误