2009-09-15 8 views
1

J'essaye de tirer libcurl dans un grand projet C++.Apporter libcurl dans un programme C++

Cependant, j'ai du mal à le compiler. Je vois des erreurs venant de ws2def.h, Winsock2.h et Ws2tcpip.h

Certaines des erreurs se présentent comme suit:

 
error C2061: syntax error : identifier 'iSockaddrLength' ws2def.h 225 
error C3646: 'LPSOCKADDR' : unknown override specifier ws2def.h 225 

.. 

error C2061: syntax error : identifier 'dwNumberOfProtocols' winsock2.h 1259 

J'ai essayé de compiler le fichier #include « curl.h. » dans mode C droit, mais cela n'a pas résolu le problème.

+0

Y a-t-il des avertissements concernant les fichiers d'en-tête manquants? Sur ma plate-forme, curl.h est dans/usr/include/curl/alors je devrais #include . Sur les plates-formes Unix, il existe un utilitaire appelé curl-config qui peut indiquer les bibliothèques et les options à compiler et lier avec libcurl. Je suppose que vous utilisez Windows, ce qui ne vous aidera peut-être pas beaucoup. –

+0

Ceux qui semblent des erreurs VC++, si vous construisez dans Visual Studio jetez un oeil sur les 2 guides que vous pouvez trouver là, la dernière fois que j'ai eu besoin de le compiler avec ce compilateur je me souviens que c'était très simple: curl.haxx.se/libcurl/c – Xandy

Répondre

1

Essayez d'inclure windows.h AVANT d'inclure winsock2.h ou tout en-tête libcurl. Ne me demandez pas pourquoi cela fonctionne parfois, mais c'est le cas.

2

Quel compilateur C++ utilisez-vous? Le mien n'a pas ws2def.h du tout. De plus, gardez à l'esprit que winsock.h et winsock2.h ne sont pas compatibles entre eux, et certains des fichiers d'en-tête Win32 incluront winsock.h par défaut, avant que votre code ait une chance d'inclure winsock2.h. Vous devrez donc peut-être désactiver winsock.h en définissant _WINSOCKAPI_ dans les conditions du compilateur de votre projet.

+0

À mon humble avis, il est préférable d'inclure winsock2.h avant windows.h (qui inclut winsock.h), au lieu de définir _WINSOCKAPI_. – KiNgMaR

+0

Cela n'est toutefois pas toujours possible, selon le compilateur/framework que vous utilisez, si des en-têtes précompilés sont utilisés, etc. –

0

Il semble que quelque chose d'autre apporte winsock définit qui sont en conflit avec curl. Pouvez-vous essayer de mettre en place un projet que juste utilise? Oh, un je devais ajouter CURL_STATICLIB à mes définitions de préprocesseur pour le faire un lien.

Questions connexes