在王总和旷工的提醒下,我试着用vsaddin,制作带界面的qt dll,供MFC调用。(注意一下64位的事)
首先,使用vsaddin,那么在vs中新建项目,就回多出个QT,如下图选择。
之后,在main文件中,改动如下:
代码为:
#include "QtGuiApplication1.h"
#include <QtWidgets/QApplication>
//int main(int argc, char *argv[])
//{
// QApplication a(argc, argv);
// QtGuiApplication1 w;
// w.show();
// return a.exec();
//}
extern "C"__declspec(dllexport) int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QtGuiApplication1 w;
w.show();
return a.exec();
}
然后设置属性:
这个时候就输出dll文件,可供MFC调用了。
新建一个MFC工程,注意64位。做个按钮,里面代码如下:
void CMFCApplication2Dlg::OnBnClickedButton1()
{
HMODULE hDLL = LoadLibrary(_T("QtGuiApplication1"));
if (hDLL != NULL)
{
typedef bool(*pShow)(HWND parent);
typedef int(*pMain)(int, char *[]);
pMain fMain = pMain(GetProcAddress(hDLL, "main"));
if (fMain != NULL)
{
fMain(0, 0);
}
FreeLibrary(hDLL);
}
}