就在我开始之前,我已经搜索了 SO 和 Google 很长一段时间试图解决这个问题并且没有成功。
我正在尝试编译我的项目,该项目曾经使用某个库来提供基于 Windows 窗体的 GUI 功能。现在我的公司已经开始迁移到 Qt,我决定开始转换我的小型应用程序以支持 Qt。
起初,由于缺少标头,它根本无法编译。现在已排序,由于以下错误,我的最终 .exe 无法链接。
Creating library Bin\VS_V8\Win32\Debug\Disp.lib and object Bin\VS_V8\Win32\Debug\Disp.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)
Bin\VS_V8\Win32\Debug\Disp.exe : fatal error LNK1120: 3 unresolved externals
我们公司有一个小型的“Qt 测试应用程序”,它是用来玩的,这是我导入的地方。我可以很好地编译和链接。根据我收集到的信息,Qt 文件必须满足以下属性:
- 确保包含 QTDi
- 将 UIC 编译器添加到 UI 文件
- 将资源编译器添加到资源文件
- 将 MOC 编译器添加到创建的头文件中。
我注意到我缺少 MOC 构建工具命令,所以我将它们添加到我的 UI 文件的标题中。然而,这并没有改变链接问题。我读到我应该删除所有构建的文件并进行清理以解决它。这也不起作用。
我已经检查过了,并且 Q_OBJECT 是在类中定义的。
我正在使用带有 Qt 插件的 VS2005。但是,我没有为 Qt 启动新项目,我只是使用旧的 Visual Studio 解决方案/VCProj。
任何想法下一步去哪里?