0

タイトルが示すように、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]

これについて他の場所で見つけた修正は、ビジュアル スタジオのプロジェクト設定のように思われるため、それを回避する方法がわかりません。

これを修正する方法、またはafx_msgのものを回避する方法についてのアイデアはありますか?

どうもありがとう

4

2 に答える 2

1

エラーメッセージが言ったことを実行して、プリプロセッサシンボルを実行#defineするのはどうですか。_AFXDLLビルド環境によっては、引数としてコンパイラ コマンド ラインに追加するだけです (/D_AFXDLL私の記憶が正しければ)。しかし、Qt を使用しているときは、おそらく *.pro ファイルを取得し、そこに (DEFINES変数を使用して) 追加することができます。したがって、この行を *.pro ファイルに追加するだけです

DEFINES += _AFXDLL

しかし、MFC コードを Qt アプリケーション (2 つの完全に異なる GUI および OS 抽象化ライブラリ) に統合するだけでは、設計の問題は言うまでもなく、両方がうまく連携しないため、あまり役に立ちません。おそらく、アプリケーションを MFC から Qt に移植できます。

于 2011-06-14T22:23:35.737 に答える
0

基本的には、静的ライブラリまたは DLL を使用する必要があることを示しています。混ぜることはできません。

あなたが言うように、これはプロジェクト設定の一部です。

于 2011-06-14T21:58:01.053 に答える