如何在 Qt 应用程序中使用 MFC dll

Posted

技术标签:

【中文标题】如何在 Qt 应用程序中使用 MFC dll【英文标题】:How to use a MFC dll in a Qt application 【发布时间】:2011-05-11 10:55:32 【问题描述】:

我正在创建一个 Qt 应用程序,我需要在其中使用一个 mfc dll! (我用的是vs2008)

qt 应用程序项目属性为: 配置类型:应用 使用标准的 windows 库

这样,当我尝试使用我得到的 mfc dll 时(在构建期间):

fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

如果我将 mfc 属性更改为 Use MFC in a shared DLL 应用程序构建, 但是当我尝试运行它时,我得到了

Unhandled exception at 0x78a5b48a (mfc90ud.dll) in myApplication.exe: 0xC0000005: Access violation reading location 0x00000000.

有什么想法吗?

谢谢!

【问题讨论】:

【参考方案1】:

我猜问题是你的 Qt-dll 是用另一个版本的 C++ 运行时库而不是 MFC-dll 构建的。使用具有不同运行时的两个 DLL 会在您启动程序时导致崩溃。

我不知道你是否可以从源代码重建 Qt,这将是我唯一的猜测如何解决这个问题。您究竟需要 MFC 库提供什么?也许还有另一种方法可以做你想做的事。

【讨论】:

以上是关于如何在 Qt 应用程序中使用 MFC dll的主要内容,如果未能解决你的问题,请参考以下文章

Qt/MFC 迁移框架工具:正确退出 DLL?

MFC生成的DLL导出类的函数,在Qt中如何调用

在非 Qt 应用程序中使用基于 Qt 的 DLL

QT跟MFC的区别?QT可以调用MFC的东西吗?

如何在 Visual Studio 中将 Dll 添加到 MFC 应用程序

对界面编程来说c++的mfc,qt和c#的winform,wpf哪个应用多?学哪个好?