Qt Win迁移框架的链接错误:未解析的符号QWinWidget :: staticMetaObject

时间:2012-05-29 12:48:22

标签: qt qt-mfc-migration

我正在尝试设置Qt Win Migration框架,以便在现有的基于MFC的应用程序中使用Qt。我想将框架用作库,因此我在qmake文件上运行qtwinmigrate/buildlib/buildlib.pro来创建Visual Studio vcxproj项目文件。我将框架构建为dll / lib,并将标头放在一个公共的include目录中。在我的MFC项目中,我添加了Qt迁移框架的lib作为依赖项,在适当的地方包含了标头,并添加了测试框架的代码。一切都编译好,但后来我得到一个链接器错误:

  

错误LNK2001:未解析的外部符号“public:static struct QMetaObject const QWinWidget :: staticMetaObject”(?staticMetaObject @ QWinWidget @@ 2UQMetaObject @@ B)

1 个答案:

答案 0 :(得分:5)

根据this forum post,必须将预处理器定义添加到使用Qt Win Migration框架作为库的MFC项目中。只需添加

QT_QTWINMIGRATE_IMPORT

Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions下的项目设置。

如需更深入地解释为何需要这样做,请参阅this blog post