未解决的外部 'WSADuplicateSocketW' link 错误

Unresolved external 'WSADuplicateSocketW' link error

我的 WSADuplicateSocket 函数链接有问题。 Ws2_32.lib 存在,库路径设置正确。 Windows 7 是否支持 WSADuplicateSocket?可以在没有 WSADuplicateSocket 的情况下将套接字传递给子进程吗?

IDE:C++Builder XE5,OS:Windows7

Is WSADuplicateSocket suported for Windows 7?

是的。

但这不是 Windows 7 问题。这是一个 IDE/project 问题。 $(BDS)\lib\win32\release\psdk and/or $(BDS)\lib\win32\release 文件夹(无论您的项目链接到哪个)中的 ws2_32.lib 副本不包含 WSADuplicateSocketW 的符号,或者您一开始并没有真正将 ws2_32.lib 链接到您的项目中。其中任何一个都会导致链接器抱怨。我的猜测是后者。

我检查了 XE2 和 XE5 中的 .lib 文件,WSADuplicateSocketW 符号在两个版本中都存在。因此,请确保您实际链接到 ws2_32.lib 并且没有安装 bad/corrupt。如果需要,您可以使用命令行 IMPLIB.EXE 工具从 Windows 文件夹中的 ws2_32.dll 创建一个新的 ws2_32.lib 文件。

it's possible pass socket to child process without WSADuplicateSocket?

没有