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

Bre*_*hns 5 qt qt-mfc-migration

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

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

Bre*_*hns 6

根据这篇论坛帖子,必须将预处理器定义添加到使用Qt Win Migration框架作为库的MFC项目中.只需添加

QT_QTWINMIGRATE_IMPORT

到项目设置下Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions.

有关为何需要进行更深入的解释,请参阅此博客文章.