求Watcom对应SOCKET.H的库文件及socket()函数未定义报错解决方法
问题原因
链接报socket()未定义是因为仅包含了头文件获取函数声明,没有关联包含socket接口具体实现的依赖库,无法完成符号解析。
解决方案
DOS环境没有原生socket系统调用,Watcom C实现socket功能需要依赖Wattcp TCP/IP库,操作步骤如下:
- 先将Wattcp库的头文件目录添加到Watcom的
INCLUDE环境变量,库文件目录添加到LIB环境变量 - 编译链接时额外添加
wattcp.lib作为链接参数,示例编译命令:wcl386 test.c wattcp.lib - 注意库文件版本要和编译目标匹配:编译16位DOS程序使用16位版
wattcp.lib,编译32位DOS扩展程序使用32位版wattcp.lib。
额外注意事项
你当前代码中自定义的fd_set、相关宏定义大概率会和Wattcp头文件的内置定义冲突,建议删除这部分自定义内容,直接引用Wattcp提供的<sys/socket.h>即可,避免出现重复定义报错。
内容的提问来源于stack exchange,提问作者Ryanwuzhere
相关产品推荐
相关产品推荐

