我正在尝试编译代码
#include <Header1.h>
#include "Header2..h"
#include <ctype.h>
Header1.h包括winsock.h _
和Header2.h包含windows.h
我使用winsock.h而不是winsock2.h,因为winsock2.h显示重定义错误,这是一个标准错误,但我无法使用提供给他们的解决方案来解决这个问题。
我也试过包含ws2tcpip.h,但它在winsock.h中给出了大量的重定义错误
我在这个模块中遇到了12个错误
error C3861: 'close': identifier not found
error C2664: 'setsockopt' : cannot convert parameter 4 from 'timeval *' to 'const char *'
error C2065: 'socklen_t' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'optionLength'
error C2065: 'optionLength' : undeclared identifier
error C2065: 'optionLength' : undeclared identifier
error C2664: 'setsockopt' : cannot convert parameter 4 from 'int32 *' to 'const char *'
error C2065: 'MSG_WAITALL' : undeclared identifier
error C2664: 'recvfrom' : cannot convert parameter 2 from 'uint8 *' to 'char *'
error C2065: 'ERROR_END_OF_STREAM' : undeclared identifier
error C3861: 'close': identifier not found
error C3861: 'close': identifier not found
答案 0 :(得分:3)
在包含的顶部添加#include <winsock2.h>
或#include <ws2tcpip.h>
。
#include <winsock2.h>
#include <Header1.h>
#include "Header2.h"
#include <ctype.h>
应首先包含winsock.h。我注意到你的代码似乎是unixish代码。在Windows上,closesocket
用于关闭套接字。
答案 1 :(得分:1)
此外,#define Win32_LEAN_AND_MEAN先于其他任何内容。这通常会有所帮助。
答案 2 :(得分:0)
此外,在某些情况下也有帮助(带有ws2tcpip标识符错误的问题):
#pragma once
#define _WIN32_WINNT 0x500
#include <winsock2.h>
#include <WS2tcpip.h>
#pragma comment(lib, "WS2_32.Lib")