2010-10-31 19 views
7

<winsock2.h> के साथ मेरे वीएस -2008 सी ++ प्रोजेक्ट को संकलित करने का प्रयास करते समय & सिंटैक्स त्रुटियों को फिर से परिभाषित करने के ढेर (105) प्राप्त करने के लिए संकलन त्रुटि शामिल है। विंडोज 7 64 बिट चल रहा है। मैंने गुगल किया है और खोजा है और उत्तर बहुत समान लगता है लेकिन यह मेरे लिए काम नहीं कर रहा है।वीएस -2008 <winsock2.h>

#include <windows.h> से पहले #include <winsock2.h> डालने का प्रयास किया। <windows.h> को शामिल करने का भी प्रयास नहीं किया गया है (क्योंकि winsock2 में अनुपलब्ध होने पर स्वचालित रूप से शामिल होता है)।

#define WIN32_LEAN_AND_MEAN और/या #define _WINSOCKAPI_ से पहले प्रयास किया गया।

लिंकर में -> अतिरिक्त निर्भरताओं मैंने ws2_32.lib का संदर्भ दिया है। ने भी #pragma comment(lib, "ws2_32.lib") को आजमाया।

मैंने पूरे समाधान को केवल मामले में पुनर्निर्माण किया।

सामान्य त्रुटि (कई द्वारा साझा ऐसा लगता है):

Error 5 error C2011: 'sockaddr' : 'struct' type redefinition c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h 206 RallyAction 
Error 6 error C2143: syntax error : missing '}' before 'constant' c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h 384 RallyAction 
Error 7 error C2143: syntax error : missing ';' before 'constant' c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h 384 RallyAction 
Error 8 error C2059: syntax error : 'constant' c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h 384 RallyAction 

... आदि, आदि।

किसी भी सुझाव की सराहना की जाएगी।

उत्तर

12

मेरे पास "WinsockWrapper.h" हैडर है जो मुझे स्थिरता सुनिश्चित करने में मदद करता है ... इसका सारांश है;

#ifndef _WINDOWS_ 
#define WIN32_LEAN_AND_MEAN 
#include <windows.h> 
#undef WIN32_LEAN_AND_MEAN 
#endif 

#include <winsock2.h> 

#pragma comment(lib, "ws2_32.lib") 

कुछ और जो जो की जरूरत है winsock2.h

यह, IMHO जरूरत है कि winsock2.h सबसे फ़ाइलों के शीर्ष पर डालने का मतलब है किसी भी फाइल में windows.h में खींच सकता है इससे पहले कि यह शामिल करें ..

सुनिश्चित करें कि आपका प्रीकंपिल्ड हेडर, यदि आप इसका उपयोग कर रहे हैं, तो यह भी पहले है।

1

यह एक प्रसिद्ध समस्या है। किसी भी तरह एमएस ने winsock.h बनाया और winsock2.h असंगत। यह समस्या MSVC 6.

से मौजूद है यह फ़ाइलों आप शामिल भी winsock.h भी शामिल है, जबकि आप बाद में winsock2.h

तरीके यह पहली winsock2.h सहित ठीक करने के लिए में से एक में शामिल हैं में से एक है। Windows.h से पहले भी (इसमें windows.h स्वचालित रूप से शामिल होगा)

2

< windows.h> को प्रोजेक्ट (अलग .h फ़ाइल) में और कहीं से ऊपर .h फ़ाइल से पहले कहा जाता है। देर से कोडिंग के लिए मुझे यही मिलता है। मदद के लिए धन्यवाद, सराहना की।

मैंने < windows.h> < winsock2.h> के साथ कॉल किया और यह ठीक काम कर रहा है।

में < mmsystem.h> यादृच्छिक रूप से मुझे समस्याएं (हालांकि हर दूसरे संकलन) के बाद समस्याएं शुरू कर रही हैं। मैं इसे #ifdef _WIN32 के साथ encapsulated मिला लेकिन अभी भी यह यादृच्छिक लगता है। आखिरी बार परियोजना को सहेजने के बाद इसे सफलतापूर्वक संकलित किया गया (हर दूसरे समय) और पुनरारंभ किया गया वीएस -2008 ऐसा 'तय' लगता है। त्रुटि एक आंतरिक लिंकर त्रुटि थी (एमएमएस lib संदर्भित मिला)।

संबंधित मुद्दे