Solved

Using Winsock in a DLL

Posted on 2000-04-27
4
349 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

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

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

Many modern programming languages support the concept of a property -- a class member that combines characteristics of both a data member and a method.  These are sometimes called "smart fields" because you can add logic that is applied automaticall…
Container Orchestration platforms empower organizations to scale their apps at an exceptional rate. This is the reason numerous innovation-driven companies are moving apps to an appropriated datacenter wide platform that empowers them to scale at a …
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 clear a vector as well as how to detect empty vectors in C++.

770 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