3

だから私はこの警告を受けています:

initialization makes integer from pointer without a cast

次のコードで:

void receive(u_char *args, const struct pcap_pkthdr *pkthdr, const u_char *buffer)

{

const int one = 1;

int LEN = args;      /* THIS IS THE LINE */

struct ipheader *ip;

struct tcpheader *tcp;

正直なところ、ほとんどすべての検索が返されるため、初心者の私は何をすべきかわかりませんmakes pointer from integer

次のコンパイラ メッセージも表示されます。

/tmp/cci6u7NH.o: In function `main':
ChannelBunny.c:(.text+0x448): undefined reference to `pthread_create'
ChannelBunny.c:(.text+0x4b7): undefined reference to `pthread_join'
/tmp/cci6u7NH.o: In function `receive':
ChannelBunny.c:(.text+0xcb6): undefined reference to `nthol'
ChannelBunny.c:(.text+0xcdf): undefined reference to `nthol'
collect2: ld returned 1 exit status

を使用して同様の pcap 問題を取り除き-l pcapましたが、他の 2 つではうまくいきませんでした。それはちょうど戻ってきました:

gcc: pthread: No such file or directory
gcc: nthol: No such file or director

何かをダウンロードする必要があると思いますか?または、使用する必要がある別のコマンドがあります。(それがあなたに役立つなら、私はBacktrack5を使用しています)。

4

3 に答える 3

7

やったほうがいい

int LEN = *args;

args はポインタで、*args はそれが指す値です。また、u_char を int に入れるべきではありません。

nthol の場合: http://msdn.microsoft.com/en-us/library/windows/desktop/ms740069(v=vs.85).aspx

于 2012-08-18T15:41:49.990 に答える
3

atoi()function を使用して char* を int に変換できます。

pthread に関するリンク エラーについては-lpthread、コンパイル コマンドを実行してみてください。

于 2012-08-18T15:33:33.160 に答える
0

ポインタを渡します

u_char *args

あなたはそれを整数に代入しようとします

int LEN = args;

エラーメッセージはこう言っています。

「ポインタから整数を作る」

本当の問題は、args とは何だと思いますか? 見ただけで、いくつかの引数の長さではなく、いくつかの引数を保持していると思いますか?

于 2012-08-18T17:39:35.573 に答える