userpal
userpal

Reputation: 1523

How to include ws2tcpip.h and ws2def.h into a Visual C++ 2008 project?

I am new to Visual C++. I have installed Visual C++ 2008 Express Edition (with SP1) in Windows XP. I am trying to compile an open source Visual C++ project.

I have open the .vcproj project in VC++ 2008 Express. When I use Build > Rebuild Solution, it shows the following output:

3 error(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

The following are the 3 errors:

error C3861: 'IN6_IS_ADDR_MULTICAST': identifier not found

error C2065: 'IPPROTO_IPV6' : undeclared identifier

error C2065: 'IPPROTO_IPV6' : undeclared identifier

I have been googling for a very long time. I found that these identifier are available in the following files:

If I am not mistaken, these files are used by Windows developers to do network/socket programming. It should be available somewhere in Windows.

May I know what is the difference between error C2065: undeclared identifier and error C3861: identifier not found?

How can I include ws2tcpip.h and ws2def.h into a Visual C++ 2008 project?

Thanks

Upvotes: 0

Views: 10567

Answers (2)

Helcar
Helcar

Reputation: 31

The WIN32_LEAN_AND_MEAN macro prevents the Winsock.h from being included by the Windows.h header.

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif

Or add project - derective WIN32_LEAN_AND_MEAN

Upvotes: 3

Mark Foreman
Mark Foreman

Reputation: 2480

Is it as simple as #including these headers in the appropriate files?

#include <winsock2.h>
#include <ws2tcpip.h>

Note that winsock2.h must be #included before ws2tcpip.h, otherwise you'll get compile errors like "ip_mreq::imr_multiaddr uses undefined struc in_addr" and "Byte is not a member of in6_addr::__unnamed".

Upvotes: 1

Related Questions