正如标题所示,我正在使用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内容的任何想法?
非常感谢
答案 0 :(得分:1)
如何执行错误消息所说的内容以及#define
预处理程序符号_AFXDLL
。根据您的构建环境,您只需将其作为参数添加到编译器命令行(/D_AFXDLL
,如果我没记错的话)。但是当你使用Qt时,你可能还是有一个* .pro文件,可以在那里添加它(使用DEFINES
变量)。所以只需将此行添加到* .pro文件
DEFINES += _AFXDLL
但是只是将MFC代码集成到Qt应用程序(这是两个完全不同的GUI和OS抽象库)中将不会有太大的帮助,因为它们都不能很好地协同工作,更不用说设计了问题。也许您可以将应用程序从MFC移植到Qt。
答案 1 :(得分:0)
它基本上说你必须使用静态库或DLL。你不能混。
就像你说的,这是项目设置的一部分。