QA@IT

Pocoを使用するとエラー

3189 PV

VisualC++2010ExpressでC++を使いPocoを使用したPOPでのメール受信プログラムを作成していルのですが、
Pocoを使用しようとするとエラーとなります。
具体的には

#include <Poco/Net/POP3ClientSession.h>
using Poco::Net::POP3ClientSession;

の2行を宣言した段階でコンパイルすると

1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h(132): error C2011: 'fd_set' : 'struct' 型の再定義
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock.h(68) : 'fd_set' の宣言を確認してください。
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h(1600): error C2375: 'bind' : 再定義されています。異なるリンケージです。
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock.h(747) : 'bind' の宣言を確認してください。
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ws2tcpip.h(664): error C3861: 'WSASetLastError': 識別子が見つかりませんでした

が発生します。本当は上記の3つのエラーがそれぞれ大量に発生します。
何が問題なんでしょうか?教えていただけませんでしょうか?

追記~
実は外部のライブラリを2つ使用していたのですが、ご指摘通りその一方でwinsock.hもう一方でwinsock2.hがインクルードされていたのが原因でした。同時に使えそうにないので、winsockを使ってPOPのコマンドを使って作ってみようと思います。

回答

Poco のことはわかりませんが、エラーメッセージから推測すると winsock.h と winsock2.h の両方がインクルードされているからだと思われます。

多分 Poco/Net/POP3ClientSession.h の方でどちらかがインクルードされていて、自分のコードでもう片方をインクルードしているのでは無いでしょうか

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。