1

libcurlを大規模な C++ プロジェクトに取り込もうとしています。

ただし、コンパイルに問題があります。ws2def.h、winsock2.h、および ws2tcpip.h からのエラーが表示されます

エラーの一部は次のようになります。

エラー C2061: 構文エラー: 識別子 'iSockaddrLength' ws2def.h 225
エラー C3646: 'LPSOCKADDR': 不明なオーバーライド指定子 ws2def.h 225

..

エラー C2061: 構文エラー: 識別子 'dwNumberOfProtocols' winsock2.h 1259

#include "curl.h" のファイルをストレート C モードでコンパイルしてみましたが、問題は解決しませんでした。

4

3 に答える 3

2

どの C++ コンパイラを使用していますか? 私には ws2def.h がまったくありません。また、winsock.h と winsock2.h は相互に互換性がなく、コードに winsock2.h をインクルードする前に、一部の Win32 ヘッダー ファイルにデフォルトで winsock.h がインクルードされることに注意してください。_WINSOCKAPI_そのため、プロジェクトのコンパイラ条件で定義して winsock.h を無効にする必要がある場合があります。

于 2009-09-15T22:28:55.447 に答える
1

インクルードする前に、またはlibcurlヘッダーwindows.hをインクルードしてみてください。winsock2.hなぜこれが時々機能するのか私に聞かないでください、しかしそれは機能します。

于 2009-09-16T06:11:41.130 に答える
0

curl と競合する winsock 定義を別の何かが持ち込んでいるように見えます。curlだけを使用するプロジェクトをセットアップしてみてください。ああ、プリプロセッサ定義に CURL_STATICLIB を追加してリンクさせる必要がありました。

于 2009-09-16T02:09:53.137 に答える