Solved

Using Winsock in a DLL

Posted on 2000-04-27
4
348 Views
Last Modified: 2010-08-05
Hi,

I am trying to write a simple socket program for a C++ DLL. I am getting the errors

c:\program files\microsoft visual studio\vc98\include\winsock.h(520) : error C2011: 'linger' : 'struct' type redefinition

I have the following code to protect redefinition in all .h files:

#ifndef __WIN32_H
#define __WIN32_H

#include <winsock.h>
#include .....

#endif

I am also getting the following warnings. They seem very odd to me

c:\program files\microsoft visual studio\vc98\include\winsock.h(551) : warning C4005: 'FD_READ' : macro redefinition
        c:\program files\microsoft visual studio\vc98\include\winsock2.h(598) : see previous definition of 'FD_READ'  

I have the ws2_32.lib in the project-link tab

please help :)

Sonya Klose


0
Comment
Question by:sklose
  • 2
4 Comments
 
LVL 4

Accepted Solution

by:
pellep earned 60 total points
ID: 2754429
Try to include winsock2.h instead of winsock.h
Also, i beleive that if you include windows.h, it will include winsock headers for you.
0
 
LVL 4

Expert Comment

by:saurabh_dasgupta
ID: 2754458
If you are linking with ws2_32.lib then you better include WINSOCK2.H

I think that, the problem mentioned by you is occurring because, somewhere you
are including both WINSOCK.H and WINSOCK2.H . Only one of them can be included.

#include <WINSOCK.H>
#include <WINSOCK.H>
will work fine , but

#include <WINSOCK.H> //this could be be //in some other header file , and that //file is getting included here
#include <WINSOCK2.H>
will lead to errors similar to what you have stated.


Hope this helps.
0
 

Author Comment

by:sklose
ID: 2757507
Thankyou!!!!
0
 

Author Comment

by:sklose
ID: 2757521
It works now!

windows.h sure does include winsock.h
All I had to do was replace winsock.h with windows.h and presto it work!

Thanks a million
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Often, when implementing a feature, you won't know how certain events should be handled at the point where they occur and you'd rather defer to the user of your function or class. For example, a XML parser will extract a tag from the source code, wh…
IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now