• 締切済み

VC++、windows.hのincludeエラー

最近C++を勉強し始めたのですが出だしからつまづいてしまいました。 Visual Studio 2010 SP1 + Windows SDK 7.1 (OS:windows7 Professional 64bit版)を使用しているのですが、#include <windows.h> のみでビルドを行ったところ以下のように driverspecs.h でエラーが生じてしまいました。 1>c:\program files\microsoft sdks\windows\v7.1\include\driverspecs.h(356): error C2143: 構文エラー : ')' が '(' の前にありません。 1>c:\program files\microsoft sdks\windows\v7.1\include\driverspecs.h(356): error C2091: 関数は関数を返せません。 1>c:\program files\microsoft sdks\windows\v7.1\include\driverspecs.h(356): error C2059: 構文エラー : ')' <中略> 1>c:\program files\microsoft sdks\windows\v7.1\include\driverspecs.h(699): fatal error C1003: プログラム内のエラーが 100 個を超えました。コンパイルは中断されます。 1> 1>ビルドに失敗しました。 以下に driverspecs.h ファイルのエラー部分を抜粋して載せておきます。 __ANNOTATION(SAL_functionClass(__in char *);) #define __drv_functionClass(x) \ __drv_out(__drv_declspec("SAL_functionClass(\""#x"\")")) まだ始めたばかりで知識も乏しく、どのように対処をしていいものか困っています。 何か解決の糸口になるようなヒントでも構いませんので教えて頂けると助かります。 よろしくお願いします。

みんなの回答

  • kekyo0
  • ベストアンサー率62% (5/8)
回答No.1

driverspecs.hはあまり見たことがないヘッダファイルです。中身を見た所、Windowsカーネルに絡む定義があるようですが、プロジェクトファイルはWin32プロジェクトで、インクルードしたのはwindows.hだけですか? あとは、コンパイル設定で余計なプリプロセッサ定義を指定したとか? #新規にプロジェクトを開始し、C++ Win32プロジェクトでコンソールアプリケーションを選択して、そのままビルドしたら通りませんか? #これで通るなら、stdio.h の前あたりで、windows.hをインクルードすれば行けるはずです。

関連するQ&A

  • 【VC++】 学校のプロジェクトを家で続けたい

    学校で使っているVisual Studio2010で使っているプロジェクト(ソリューション)を、家のPCのVisual C++ 2010 Expressで使いたいのですが、エラーが出てうまく移行できません。 家のPCをうまく設定して学校のPCと両方でプロジェクトを使いたいのですがどうすれば良いのでしょうか。 もしかすると、以前設定を変更してデフォルトの状態ではないかもしれません… //インクルード文 #include "DxAll3.h" //エラーメッセージ(抜粋) 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h : warning C4821: Unicode エンコードの種類を指定できません。シグネチャ (BOM) つきファイルを保存してください。 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h(1): error C2018: 文字 '0x4' は認識できません。 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h(1): error C2018: 文字 '0x6' は認識できません。 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h(1): error C2018: 文字 '0x2' は認識できません。 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h(1): error C2018: 文字 '0x7' は認識できません。 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h(1): error C2146: 構文エラー : ';' が、識別子 'Ntff' の前に必要です。 以下100エラーでコンパイル中断。

  • string.h内でエラー

    Visual C++ 2005でプログラムを組んでいます。 あるプログラムをビルドすると以下のようにstring.h内でエラーが大量に発生します。string.hをインクルードしないとエラーは出ないことからおそらくstring.hまわりの設定がおかしいとは思うのですがよくわかりません。 エラー 2 error C2144: 構文エラー : 'char' は ')' によって先行されなければなりません。c:\program files\microsoft visual studio 8\vc\include\string.h 136 エラー 3 error C2144: 構文エラー : 'char' は ';' によって先行されなければなりません。c:\program files\microsoft visual studio 8\vc\include\string.h 136 エラー 5 error C2143: 構文エラー : ';' が ',' の前にありません。c:\program files \ microsoftvisualstudio8 \ vc\ include\ string.h 136 宜しくお願いします。

  • winpcapを用いたプログラミング

    visual c++ 2010expressを使ってます。 #include <stdio.h> #include "pcap.h" int main() { return 0; } これをコンパイルすると、 fatal error C1083: include ファイルを開けません。'sys/time.h': No such file or directory とエラーが出ます。 pcap.hの #if defined(WIN32) #include <pcap-stdinc.h> #elif defined(MSDOS) #include <sys/types.h> #include <sys/socket.h> /* u_int, u_char etc. */ #else /* UN*X */ #include <sys/types.h> #include <sys/time.h> #endif /* WIN32/MSDOS/UN*X */ の部分が原因だと思って #define WIN32 を付け加えると、エラーは出ませんでした。しかし、 #define WIN32 #include <stdio.h> #include <Windows.h> #include "pcap.h" int main() { return 0; } これでコンパイルすると下のようにエラーがでます。 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(91): warning C4005: 'AF_IPX' : マクロが再定義されました。 1> c:\program files\microsoft sdks\windows\v7.0a\include\winsock.h(460) : 'AF_IPX' の前の定義を確認してください 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(131): warning C4005: 'AF_MAX' : マクロが再定義されました。 1> c:\program files\microsoft sdks\windows\v7.0a\include\winsock.h(479) : 'AF_MAX' の前の定義を確認してください 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(168): warning C4005: 'SO_DONTLINGER' : マクロが再定義されました。 1> c:\program files\microsoft sdks\windows\v7.0a\include\winsock.h(402) : 'SO_DONTLINGER' の前の定義を確認してください 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(212): error C2011: 'sockaddr' : 'struct' 型の再定義 1> c:\program files\microsoft sdks\windows\v7.0a\include\winsock.h(485) : 'sockaddr' の宣言を確認してください。 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(390): error C2059: 構文エラー : '定数' 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(390): error C3805: '定数': 予期しないトークン。'}' か ',' が必要です。 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(524): warning C4005: 省略 'pcap_pkthdr::ts' が 未定義の struct 'timeval' で使用しています。 原因は何でしょうか

  • VC++ 2010 Expressのエラー

    visual C++ 2010 Expressでビルドエラーが解消できません。 VC++初心者です。非常に困っているので、お答えいただきたいです。 ARtoolkitとkinectを使用するために、windows8(64bit)でvisual C++ 2010 Expressを使用し、ビルドをしようとすると fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory このようなエラーが表示されます。同様にexcpt.h、sdkddkver.h、stdio.h、stdlib.h、crtdefs.hもincludeできないとエラーが表示されます。 これらのファイルは全てC:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include の中に存在したため、このディレクトリをインクルードディレクトリとライブラリディレクトリに追加すると、includeファイルを開けないエラーは解消するのですが、 fatal error C1189: #error : ERROR: Use of C runtime library internal header file. というエラーが表示され、検索してみたものの原因がわからずにいます。 また既にvisual C++2008でARtoolkitを動かせる状態にしてあることも影響はあるのでしょうか? 大変わかりずらい質問で恐縮ですがお答えいただきたいです。

  • include<wtsapi32.h>でエラーがでる

    .netを使ってWTSQurySessionInformationのAPIを使う C言語プログラムを作ろうとしています。 ライブラリーにwtsapi32.lib ヘッダーにwtsapi32.h が必要と書いてあったので ライブラリーをインポートし、ヘッダーにPSDKの最新のものをいれましたが、エラーがでます。 c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\WtsApi32.h(109) : error C2061:構文エラー : 識別子 'LPWSTR といったものがたくさんエラーがでます、どうすれば 解決できるでしょうか。調べてもわからないため困っています。OSはXPを使ってます。

  • 関数やクラスの相関関係を表示させるにはどうしたらよいでしょうか。

    関数やクラスの相関関係を表示させるにはどうしたらよいでしょうか。 プログラミング初心者です。いつもお世話になっております。 C++を用いて関数の静的な呼び出しツリーやクラスの継承関係などを表示するために、 Browser Toolkits for Microsoft Visual C ++のbsckit70.exeをダウンロードし試行錯誤しております。 http://www.microsoft.com/downloads/details.aspx?FamilyId=621AE185-1C2A-4D6B-8146-183D66FE709D&displaylang=en bscファイルにより関数呼び出しツリ-を作成するツールだそうです。 exeファイルを実行すると得られる[bscsdk>samples>bd-cxx>bd.cpp]を、visual studioで [ファイル>新規作成>既存のコードからプロジェクトを作成]から選択しプロジェクトを立ち上げました。 そして同梱されているbsc.hファイルをプロジェクトに追加し、ビルドしたところ以下のエラーが出てきました。 --略-- 1>cl : コマンド ライン warning D9035 : オプション 'Wp64' の使用は現在推奨されていません。今後のバージョンからは削除されます。 1>bd.cpp 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(5545) : error C2146: 構文エラー : ';' が、識別子 'ContextRecord' の前に必要です。 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(5545) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(5545) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(11263) : error C2065: 'PCONTEXT' : 定義されていない識別子です。 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(11264) : error C2146: 構文エラー : ')' が、識別子 'ContextRecord' の前に必要です。 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(11264) : warning C4229: 旧形式が使用されています : データの修飾子は無視されます。 -略- winnt.hの該当部分が以下になります。 5543 typedef struct _EXCEPTION_POINTERS { 5544 PEXCEPTION_RECORD ExceptionRecord; 5545 PCONTEXT ContextRecord; 5546 } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; 11258 #if (NTDDI_VERSION > NTDDI_WIN2K) 11259 NTSYSAPI 11260 VOID 11261 NTAPI 11262 RtlCaptureContext ( 11263 __out PCONTEXT ContextRecord 11264 ); 11265 #endif ちなみにwinnt.hはbd.cppでは呼び出されておらず、bsc.hからwindef.hがincludeされ、windef.hからwinnt.hがincludeされていました。 何をどうすればToolkitが動くようになるのか見当がついておりません。いくつかエラーが出ていますが関連性がよく分からず、まとめて質問する形になってしまいました。またBrowserToolkitsよりも良い方法がありましたらご教授いただければと思います。よろしくお願いします。 [開発環境] WindowsXP(SP3) VisualStudio2008 C++

  • 粒子法プログラムのビルドエラー(cstdlibのエラー)

    粒子法のMPS法のプログラミングをしているのですが、C++でmps.cをビルドをすると、cstdlibのエラーが出てビルドが出来ません。 mps.cの本文中にはエラーは無く、visual studio 9.0にあるcstdlibの構文エラーが出てしまいます。 最初から入っているライブラリファイルが間違っているとは思えません。 解決法を教えてください。お願いします。 ↓ mps.c内でcstdlibを使っている場所 ↓ #include <cstdlib> /* This line is necessary for C++ compiler. Remove this line in C compiler */ #include <stdio.h> #include <sys/types.h> #include <math.h> #include <string.h> ↓ エラーメッセージ ↓ 1>コンパイルしています... 1>mps.c 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2143: 構文エラー : '{' が ':' の前にありません。 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2059: 構文エラー : ':' 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2143: 構文エラー : '{' が ':' の前にありません。 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2059: 構文エラー : ':' 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2143: 構文エラー : '{' が ':' の前にありません。 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2059: 構文エラー : ':' 省略(21行目のエラーが23~32行目まで同じエラーが続く) 1>MPS3000 - エラー 62、警告 0 ========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========

  • winnetwk.hについて

    ネットワークプロバイダーのバージョンなどを表示されるプログラムを実行しようとしたのですが、以下のようなエラーがでて先に進めません。どうしたら直すことが出来るでしょうか? 1>c:\program files\microsoft platform sdk\include\winnetwk.h(142) : error C2146: 構文エラー : ';' が、識別子 'dwScope' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(142) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(142) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(143) : error C2146: 構文エラー : ';' が、識別子 'dwType' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(143) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(143) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(144) : error C2146: 構文エラー : ';' が、識別子 'dwDisplayType' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(144) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(144) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(145) : error C2146: 構文エラー : ';' が、識別子 'dwUsage' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(145) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(145) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(146) : error C2146: 構文エラー : ';' が、識別子 'lpLocalName' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(146) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(146) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(147) : error C2146: 構文エラー : ';' が、識別子 'lpRemoteName' の前に必要です。 環境はVC++2005です。

  • bcrypt.h コンパイルエラー

    #define BCRYPT_DH_PARAMETERS_MAGIC 0x4d504844 // DHPM typedef __struct_bcount(cbLength) struct _BCRYPT_DH_PARAMETER_HEADER { ULONG cbLength; ULONG dwMagic; ULONG cbKeyLength; } BCRYPT_DH_PARAMETER_HEADER; の部分で、 1>c:\program files (x86)\microsoft sdks\windows\v6.0\include\bcrypt.h(326) : error C2065: 'cbLength' : 定義されていない識別子です。 と出るのですが、解決方法はありますか? OS:Win7  VC++2005 を使っています。 サンプルコードをコンパイルしています。 SDKs は v6.0 と v7.1 をダウンロードしてあります。 コンパイラを新しくするのが簡単とは思いますが、、、 よろしくお願いいたします。

  • #include "_cv.h"の設定を教えて

    VisualStudioC++2010を用いて、#include "_cv.h"を使用したいのですが、ファイルが存在する場所 「C:\Program Files\OpenCV\cv\src」を追加のインクルードファイルに入れても以下のエラーがでます。 1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C2146: 構文エラー : ';' が、識別子 'icvDepthToDataType' の前に必要です。 1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C2433: 'CvDataType' : 'inline' はデータ宣言をするのに使用できません。 1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません ・・・・・ どなたか#include "_cv.h"の設定の仕方を教えてくれないでしょうか?