プロが教えるわが家の防犯対策術!

プログラム初心者です。
以下のエラーが出て解決方法がわからず困っております。ご存知の方宜しくお願いします。

エラー1error LNK2019: 未解決の外部シンボル __imp__ntohs@4 が関数 "void __cdecl packet_print(unsigned char *,struct pcap_pkthdr const *,unsigned char const *)" (?packet_print@@YAXPAEPBUpcap_pkthdr@@PBE@Z) で参照されました。main.obj


エラー2fatal error LNK1120: 外部参照 1 が未解決です。C:\Documents and Settings\谷本\My Documents\Visual Studio 2005\Projects\Packetmoni_Base\Debug\Packetmoni_Base.exe

A 回答 (2件)

環境を明記しましょう。


それとどんなコードを書いてそのような結果になったか記述しないと
思ったような回答が得られないかもしれません。

packet_print関数で定義のない関数(おそらくntohs関数)を呼ぼうとしています
というよなエラーメッセージなので、適切なライブラリファイルをリンクさせてください。

ntohs
http://msdn.microsoft.com/en-us/library/ms740075 …
より
>LibraryWs2_32.lib

この回答への補足

恐れ入ります。ntohs調べてみます。

環境
WinXP SP3
Visual Studio 2005
Winpcap
C,C++
以下のコードを追加後、コンパイルすると上記のようなエラーが出ました。

/*** イーサネットフレームの種類を表示 ***/
printf("%x\n", ntohs(((struct ether_header *)p)->ether_type));

補足日時:2009/04/15 14:03
    • good
    • 0
この回答へのお礼

ws2_32.libをリンクさせることで解決致しました。
助かりました。ありがとうございました。

お礼日時:2009/04/15 16:02

エラー1はVisual Studio 2005でコンパイルした際にpacket_print関数を参照しようとしていますが、呼び出すための「定義が見つからないよ」と怒られています。


エラー2はエラー1によってEXEファイルが未完成であるということです。エラー1が解決すれば無くなるはずです。

なので、packet_print関数が定義されているライブラリ、静的リンクであればLibファイル、動的リンクであればdllファイルを追加すれば解決するのではと思います。
…\Projects\Packetmoni_Base配下のフォルダに色々ライブラリのファイルがある?のではないでしょうか。
    • good
    • 1
この回答へのお礼

エラー1の解決でエラー2も解決しました。
ありがとうございました。

お礼日時:2009/04/15 16:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!