Использование afx_msg в Qt с компилятором msvc2008 - PullRequest
0 голосов
/ 15 июня 2011

Я работаю над проектом в Qt с помощью компилятора msvc2008, как сказано в заголовке.

Пример кода, из которого я пытаюсь работать, использует 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?

Большое спасибо

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Как насчет того, чтобы просто выполнить сообщение об ошибке и #define с символом препроцессора _AFXDLL. В зависимости от вашей среды сборки вам просто нужно добавить его в командную строку компилятора в качестве аргумента (/D_AFXDLL, если я правильно помню). Но когда вы работаете с Qt, вы, вероятно, все равно получили файл * .pro и можете просто добавить его туда (используя переменную DEFINES). Так что просто добавьте эту строку к вам * .pro файл

DEFINES += _AFXDLL

Но простая интеграция кода MFC в приложение Qt (которые представляют собой две совершенно разные библиотеки абстракций GUI и ОС) не окажет особой помощи, поскольку они оба не будут так хорошо работать вместе, не говоря уже о дизайне вопрос. Возможно, вы сможете портировать приложение с MFC на Qt.

0 голосов
/ 15 июня 2011

В основном это говорит о том, что вы должны использовать статические библиотеки или библиотеки DLL. Вы не можете смешивать.

Как вы говорите, это часть настроек проекта.

...