【发布时间】:2011-06-14 21:53:48
【问题描述】:
正如标题所说,我正在使用 msvc2008 编译器在 Qt 中开发一个项目。
我正在尝试使用 afx_maps 的示例代码,据我所知(我真的不知道 afx 是如何工作的),下面的代码意味着当消息 WM_PI_RAWDATA_READY收到(我不知道它是在哪里或如何收到的),函数 OnRawDataReady 被触发。
//{{AFX_MSG_MAP(CPDImfcDlg)
ON_MESSAGE(WM_PI_RAWDATA_READY, OnRawDataReady )
//}}AFX_MSG_MAP
我尝试将代码复制到我的项目中,然后在标题中添加#include,但它给了我以下错误:
D:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\INCLUDE\afx.h:24: 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]
我在其他地方找到的修复似乎是 Visual Studio 中的项目设置,所以我不知道如何解决它。
关于如何解决此问题或如何解决 afx_msg 问题的任何想法?
非常感谢
【问题讨论】:
-
这与 Qt 有什么关系,因为...?
-
因为我正在使用 microsoft 编译器在 Qt 中处理项目,因此我无法访问 Microsoft Visual Studio 2008 中提供的项目设置。
-
但是使用消息映射的代码绝对是 MFC 代码,我不明白你为什么要在 Qt 项目中使用 MFC,但也许我还没有完全理解这样做的动机。所以现在我的问题是,Qt 项目与 MFC 消息映射有什么关系。
-
@Christian Rau:我正在使用的硬件的示例代码是在 Visual Studio 项目中编写的。我想从示例项目中复制代码。我并不真正了解整个 afx 的东西,所以我不确定如何使其适应工作。由于我使用的是 microsoft 编译器,因此我希望它能够正常工作,但事实并非如此。
-
如果您解决了您的问题,它应该可以工作(将在此发布答案),但它不会真正与您的 Qt 项目一起使用,因为此代码绝对是 MFC 代码(这是另一个围绕 Win32 API 的 GUI 工具包)。从设计的角度来看,与将其移植到 Qt 相比,仅将这个示例集成到 Qt 项目中并没有那么好,但它至少应该可以工作。
标签: c++ visual-studio-2008 qt visual-c++ afx