1

正常にコンパイルされたデスクトップ プロジェクトがありますが、Windows Mobile プラットフォームをサポートするためにプロジェクトに新しい構成を追加した後、次のエラーが表示されます。

error C2146: syntax error : missing ';' before identifier 'ContextRecord' winnt.h
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int winnt.h

error C2146: syntax error : missing ';' before identifier 'LPCONTEXT'   winbase.h
error C2040: 'PCONTEXT' : '_CONTEXT *' differs in levels of indirection from 'int'  excpt.h

プロジェクトには winnt.h は含まれませんが、windows.h、windbase.h は含まれます。プロジェクト プロパティ -> 構成プロパティ -> C/C++ -> プリプロセッサ -> 定義を変更して _MBCS のように追加するか、$( ARCHFAM )、$(ARCHFAM) を追加する必要があることを Google で検索します。または、windows.h を他のヘッダー ファイルの上に配置してヘッダー ファイルの順序を変更しましたが、すべてエラーが修正されていません。

これらを修正できるという提案はありますか?ありがとう。

4

4 に答える 4

2

#include<windows.h>それらの 3 つすべてのうち、windows.h はそれらをすべてドラッグします。必要なインクルードはこれだけです。すべての Windows API の 80% をカバーし、OS の特殊な個別の側面 (直接 2D、暗号化など) を除いています。

于 2012-05-10T23:22:03.543 に答える
1

これらのエラーも発生しました。私の問題は、「;」を忘れたことです。私のヘッダーファイルの1つにあるクラス定義の背後にあります。

それ以外の:

class myClass
{
   ...
};

私が持っていた:

class myClass
{
    ...
}

多分それは誰かを助ける...

于 2014-01-11T11:16:27.727 に答える
0

ファイル winnt.h の構文上の誤りを手動で修正する必要があります。

行: typedef void *POINTER_64 PVOID64;

修正します: typedef void *POINTER_64, *PVOID64;

または 2 つ: typedef void *POINTER_64; typedef void *PVOID64;

エラーが消える

于 2016-10-10T22:56:30.810 に答える