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' で使用しています。
原因は何でしょうか
No.1ベストアンサー
- 回答日時:
VC++2008EEで試しました。
http://www.winpcap.org/devel.htm
からDLしたWinPcap 4.1.2 Developer's Packは展開して、VC++2008EEのディレクトリにIncludeとLibを追加。
# 2010ではユーザー設定ではなく、各ソリューション(プロジェクト)の方で設定するだけで、共通設定はなくなった…かな?<VC++ディレクトリの設定
で……WinPcapのヘッダのインクルードガードとかがいまいち…なのかも知れません。
# WindowsSDKの方がいまいち…なのかなぁ。
#include "pcap.h"
#include <stdio.h>
#include <Windows.h>
int main()
{
return 0;
}
で、普通にビルドが通っています。
まぁ、中身は無いのと等しいので実行はしていませんけど。
>#define WIN32
は入れていませんが…問題は出ていませんね。
# ソリューションはWin32コンソールアプリケーションで作成。
# プロジェクトの設定のC/C++コマンドラインを見ると/D "WIN32"がありますし。
回答ありがとうございます。
私の設定を見たところ、コマンドラインに/D "WIN32"がありませんでした。
追加すると、エラーなくビルドできました。
とりあえずこのままプログラミングを続けたいと思います。
No.2
- 回答日時:
個人的には「どちらかというと WinPcap が悪い」という感じかなぁと>#1.
ちと読んだ限りでは
・WinPcap (pcap.h) は WinSock2.h を #include する
・Windows.h は WinSock.h と WinSock2.h のいずれも #include されていない場合には WinSock.h を #include する
・WinSock.h と WinSock2.h を両方 #include すると困る
ので, 本質的には
pcap.h を Windows.h よりも前に #include する
というのが解決策です.
ただ, これは Windows.h ではどうにも解決できない問題で, WinPcap の方でそう言ってくれていればいいんだけどドキュメントには
Include the file pcap.h at the beginning of every source file that uses the functions exported by library.
としか書いてないんだよね.... これが
at the beginning
じゃなくて
at the very beginning
なら (そして例の方もそれにあわせていれば) まだしも.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
最近、いつ泣きましたか?
泣いてストレス発散! なんて言いますよね。 あなたは最近いつ、どんなシチュエーションで泣きましたか?
-
【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
2024年は「名探偵コナン30周年」「涼宮ハルヒ20周年」などを迎えますが、 あなたが「もうそんなに!?」と驚いた○○周年を教えてください。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
【お題】絵本のタイトル
【お題】 「ないた あかおに」「ねないこ だれだ」「はらぺこあおむし」みたいだけど、一体これどういう内容?と思った絵本のタイトルを教えて下さい
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++のifstreamの使い方
-
C言語のエラーを修正したい
-
VC++で文字列から任意の文字を...
-
セグメンテーションフォルトが...
-
switch文のエラーについて
-
mapの初期化
-
2次元vectorのerase?
-
C++でShowCursorを使いたい。
-
c++での入出力がうまくいきませ...
-
MingwでC++のソースがコンパイ...
-
構文エラーが出ているのですが...
-
信頼区間の1.96や1.65ってどこ...
-
「Aに対するBの割合」と「Aに対...
-
2÷3などの余りについて
-
プログラミング初心者です。 Py...
-
マイナスからプラスへ転じた時...
-
C言語 二分法 プログラム
-
#define _CRT_SECURE_NO_WARNIN...
-
二次関数と関数の違いは何ですか?
-
C言語を実行すると-infが出てき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラーが出ているのですが...
-
switch文のエラーについて
-
VC++で文字列から任意の文字を...
-
#include "fstream.h"
-
空ENTERの判別
-
enumの値から定義名を文字列化...
-
_tcscat がうまくいきません(V...
-
gccでコンパイル時のエラー
-
std::wstringのメモリリークに...
-
JPEGやPNGが読めるLoadImage関数
-
なぜ、C++の標準ヘッダをインク...
-
C言語のエラーを修正したい
-
名前空間でビルドエラー(LNK20...
-
リモートデスクトップの接続元I...
-
構造体配列のvectorへの変換と...
-
C言語のポインターで詰まっている
-
vectorのイテレータを大小比較...
-
CStringとString
-
#defineの使い方について
-
wstringの主力
おすすめ情報