VS2017 用MFC调用QT 带界面的动态库DLL

本文主要参考 https://blog.csdn.net/shuishanga/article/details/52183159文章, 本文与其相似很多。

 

主要是平台不一样,记录下实现过程。

VS平台:VS2017

QT:5.11.2

目的:使用MFC 调用QT动态库。

使用到的辅助文件 qtwinmigrate,可以在这个网址下载。https://github.com/qtproject/qt-solutions

注意地方:编译QT文件时使用的MinGW_32bit编译器,VS用的是32位的。

 

一。开始编辑qtwinmigrate

1.添加要显示的对话框。

2.把原来的导出函数更改成生成相关的代码。

extern "C" __declspec(dllexport) bool showDialog( HWND parent )
{
    QWinWidget win( parent );
    win.showCentered();
 
    CMyialog mydlg(&win);
    mydlg.exec();
 
    return TRUE;
}
 
 

这两步过后qtwinmigrate完成,编译生成DLL文件,然后复制出该动态库的依赖文件。

1.将生成的文件单独复制到D盘MyDLL文件夹

2.打开QT windeployqt.exe,输入动态库存放路径后开始复制依赖文件

 

等待复制完成后待用。

用VS2017新建一个对话框32Bit的,放置一个启动QT对话框按钮。

按钮的响应事件为

void CMy1112Dlg::OnBnClickedButton4()
{
    // TODO: 在此添加控件通知处理程序代码

/**************************************************************/
    HMODULE hDLL = LoadLibrary(_T("qtdialog.dll"));

    if (hDLL != NULL)
    {
        typedef bool(*pShow)(HWND parent);

        pShow fp1 = pShow(GetProcAddress(hDLL, "showDialog"));

        if (fp1 != NULL)
        {
            fp1(theApp.m_pMainWnd->m_hWnd);
        }

        FreeLibrary(hDLL);
    }
    else
    {
        /*    CString strInfo;
            strInfo.Format("Cannot Find %s", dllName);
            MessageBox(strInfo);*/
    }

}

编译生成可执行文件,将上面生成的QT动态库和依赖文件全部复制到MFC可执行文件中。

程序打包了一个,需要的自行下载https://download.csdn.net/download/u012512100/11834544

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值