如何在 Qt 应用程序中使用 MFC dll
我正在创建一个 Qt 应用程序,我需要在其中使用 mfc dll! (我使用的是vs2008)
qt应用程序项目属性是: 配置类型:应用程序 使用标准Windows库
这样,当我尝试使用mfc dll时,我得到(在构建期间):
致命错误C1189:#error:使用/ MD [d](CRT dll版本)构建MFC应用程序需要MFC共享dll版本。请 #define _AFXDLL 或不要使用 /MD[d]
如果我将 mfc 属性更改为 在共享 DLL 中使用 MFC
应用程序构建, 但是当我尝试运行它时,我得到
MyApplication.exe 中 0x78a5b48a (mfc90ud.dll) 处未处理的异常:0xC0000005:访问冲突读取位置 0x00000000。
有人有什么想法吗?
谢谢!
i am creating a Qt application and i need to use a mfc dll in it!
(i am using vs2008)
the qt application project properties are:
Configuration Type: Application
Use standard windows libraries
This way, when i try to use the mfc dll i get (during build):
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]
If i change the mfc property to Use MFC in a shared DLL
the application builds,
but when i try to run it, i get
Unhandled exception at 0x78a5b48a (mfc90ud.dll) in myApplication.exe: 0xC0000005: Access violation reading location 0x00000000.
any ideas anyone?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我猜问题在于您的 Qt-dll 是使用 MFC-dll 之外的另一个版本的 C++ 运行时库构建的。使用两个具有不同运行时间的 DLL 会导致启动程序时崩溃。
我不知道你是否可以从源代码重建 Qt,这是我唯一的猜测如何解决这个问题。您到底需要从 MFC 库中获得什么?也许还有另一种方法可以做你想做的事。
I guess the problem is that your Qt-dll is built with another version of the C++ runtime libraries than the MFC-dll. Using two DLLs with different runtimes causes a crash when you start your program.
I don't know if you can rebuild Qt from the sources, this would be my only guess how to solve this. What exactly do you need from the MFC library? Perhaps there's another way to do what you want.