我正在尝试设置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)
答案 0 :(得分:5)
根据this forum post,必须将预处理器定义添加到使用Qt Win Migration框架作为库的MFC项目中。只需添加
QT_QTWINMIGRATE_IMPORT
到Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions
下的项目设置。
如需更深入地解释为何需要这样做,请参阅this blog post。