【发布时间】:2010-06-17 05:38:59
【问题描述】:
以下错误来自仅包含 windows 和 winsock2 的文件。
C:\Users\ioil\Desktop\dm\bin>dmc sockit.c
typedef struct fd_set {
^
C:\Users\ioil\Desktop\dm\bin\..\include\win32\WINSOCK2.H(85) : Error: 'fd_set' is already defined
} fd_set;
^
C:\Users\ioil\Desktop\dm\bin\..\include\win32\WINSOCK2.H(88) : Error: identifier or '( declarator )' expected
struct timeval {
^
C:\Users\ioil\Desktop\dm\bin\..\include\win32\WINSOCK2.H(129) : Error: 'timeval' is already defined
};
^
C:\Users\ioil\Desktop\dm\bin\..\include\win32\WINSOCK2.H(132) : Error: identifier or '( declarator )' expected
struct hostent {
^
C:\Users\ioil\Desktop\dm\bin\..\include\win32\WINSOCK2.H(185) : Error: 'hostent' is already defined
Fatal error: too many errors
--- errorlevel 1
C:\Users\ioil\Desktop\dm\bin>
已经尝试过的:将winsock.dll文件与编译器和要编译的程序放在同一个目录下,放在system32目录下,用regsrv32命令进入注册表。真的不知道从哪里开始,感谢任何建议。 . .
【问题讨论】:
-
这与您的 DLL 无关。你能发布你的代码吗?
-
尝试在 windows.h 之前包含 winsock2.h
-
不要移动 winsock.dll。它是 Windows 的一部分。您可能发现的任何建议将其作为解决方案都可以追溯到 Windows 3.1 时代。就此而言,winsock.dll 也是如此——我的意思是,它可以追溯到 Windows 3.1;在 32 位平台上,您使用 wsock32.dll (Winsock 1.1) 或 ws2_32.dll (Winsock 2.x)。正如金霸王所说,你的问题是另外一回事。