![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# ExcelCS 1 2023/01/27 19:47
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- その他(ソフトウェア) ソフトが異常終了します 1 2022/08/28 01:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
なぜ、C++の標準ヘッダをインク...
-
#include "fstream.h"
-
switch文のエラーについて
-
VC++で文字列から任意の文字を...
-
C++での <iostream.h>と<iostre...
-
C言語のポインターで詰まっている
-
ハミング符号の解読について
-
gccでコンパイル時のエラー
-
std::wstringのメモリリークに...
-
VHDLのvector
-
VxWorks 6.4ソケット接続につい...
-
string型のフォーマット書式指...
-
【C++】ヘッダ内でstringを格納...
-
getlineについて
-
enumの値から定義名を文字列化...
-
C++コンパイラーのincludeのエ...
-
C++で、テキストファイルを一行...
-
VHDLのsignedとunsignedの違いは?
-
メインプログラムに#include <a...
-
clock関数のコンパイルエラーで
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
switch文のエラーについて
-
構文エラーが出ているのですが...
-
VC++で文字列から任意の文字を...
-
enumの値から定義名を文字列化...
-
空ENTERの判別
-
C++でShowCursorを使いたい。
-
なぜ、C++の標準ヘッダをインク...
-
#define中の#のエスケープ
-
C++で、テキストファイルを一行...
-
C言語のエラーを修正したい
-
gccでコンパイル時のエラー
-
C言語のポインターで詰まっている
-
#include "fstream.h"
-
リモートデスクトップの接続元I...
-
構造体配列のvectorへの変換と...
-
VS2019でofstreamが未定義になる
-
JPEGやPNGが読めるLoadImage関数
-
VHDLのsignedとunsignedの違いは?
-
構造体に決められた文字列を入...
-
std::wstringのメモリリークに...
おすすめ情報