当前位置: 代码迷 >> QT开发 >> mfc跟qt混合编程
  详细解决方案

mfc跟qt混合编程

热度:245   发布时间:2016-04-25 03:07:40.0
mfc和qt混合编程
刚接触qt,
刚刚试了下混合编程,有些不明之处;
我用vs2012创建了一个mfc对话框应用程序,
包含头文件
#include "QtWidgets/QApplication"
#include "QtWidgets/QMessageBox"
#include "QtCore/QString.h"
加入依赖库lib
#pragma comment(lib,"Qt5Core.lib")
#pragma comment(lib,"Qt5Widgets.lib")

然后在对话框上添加一个按钮
接着在按钮响应函数中添加一行代码:
QMessageBox::information(0,QObject::tr(""),QObject::tr(""),0);
在编译完成后,链接时会报错误;
MfcUseQtDllDlg.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ),该符号在函数 "public: void __thiscall CMfcUseQtDllDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CMfcUseQtDllDlg@@QAEXXZ) 中被引用

1>MfcUseQtDllDlg.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static class QString __cdecl QObject::tr(char const *,char const *,int)" (__imp_?tr@QObject@@SA?AVQString@@PBD0H@Z),该符号在函数 "public: void __thiscall CMfcUseQtDllDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CMfcUseQtDllDlg@@QAEXXZ) 中被引用

1>MfcUseQtDllDlg.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static int __cdecl QMessageBox::information(class QWidget *,class QString const &,class QString const &,int,int,int)" (__imp_?information@QMessageBox@@SAHPAVQWidget@@ABVQString@@1HHH@Z),该符号在函数 "public: void __thiscall CMfcUseQtDllDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CMfcUseQtDllDlg@@QAEXXZ) 中被引用

3 个无法解析的外部命令



根据mfc的经验 这应该是少一些lib导致的吧? 但是qt帮助文档中并没有提及这些信息,希望有经验的老师提示一下
------解决思路----------------------
你有添加Q_OBJECT宏吗?没有添加可是不行的。

Qt不能这么直接用。Qt的moc元对象编译器你不知道吗?

Qt Visual Studio Add-in你没有吗?
------解决思路----------------------
你说的这个功能够呛吧
Qt中所有的事件都是基于QApplication:exec路由的
而这个一般是主线程
如果你的MFC另外有一个Main入口  应该是不行的 
------解决思路----------------------
我也这么认为。你这个只需要一点Qt的功能,要么就完全用MFC做。即使你编译连接成功了,那么Qt加上MFC的链接库将会变得无比的庞大。
  相关解决方案