0

c++ (私は VS 2008 を使用しています) で pcap ファイルを読み込もうとしていますが、次のエラーが発生しています。

1) エラー C2011: 'bpf_program': 'struct' 型の再定義。

2) エラー C2011: 'bpf_insn': 'struct' 型の再定義

問題は、あるファイルに Packet32.h を含め、別のファイルに pcap.h を含めることだと思います (特定のクラスで Packet32.h 関数が必要であり、別のクラスで pcap ファイルを読み取るには pcap.h が必要です)。 . すべてのファイルにヘッダーガードがあります。

メイン クラスには、前述の両方のクラスを含めます。含める順序を切り替えると、別のエラーが発生します。私のように見える簡単なコードは次のとおりです。

class1.h:

.
.
.
#include <Packet32.h>
#include <windows.h>
#include <process.h>
.
.
.

class2.h:

.
.
.
#include <pcap.h>
.
.
.

main.cpp で:

#include "stdafx.h"
#include "class1.h"
#include "class2.h"
.
.
.

誰かがこれについて私を助けることができるのだろうか. それは非常に高く評価されます。

4

2 に答える 2

2

pcap.h をインクルードする前にこれを追加してみてください:

#define PCAP_DONT_INCLUDE_PCAP_BPF_H

私が見る限り、これは pcap.h が (Packet32.h に加えて) これらの定義が由来する場所である pcap-bpf.h をインクルードするのを止めます。

pcap.h がインクルードされる前に定義が常に利用可能であることを確認するために、Packet32.h のインクルードを同じ場所に追加する必要がある場合もあります。

于 2013-11-12T12:48:43.750 に答える