Windows API:对DisconnectEx的未定义引用

Windows API: Undefined reference to DisconnectEx

本文关键字:未定义 引用 DisconnectEx API Windows      更新时间:2023-10-16

我正在开发一个使用windows套接字的应用程序。我的套接字类有一个名为Disconnect的方法,它使用DisconnectEx,但我在链接时得到以下错误:

undefined reference to `DisconnectEx@16'

我正在使用MinGW,我正在链接我的应用程序与以下库:

-lws2_32 -lwsock32 -lmswsock

在msdn上说这个函数所需的最低版本是Windows XP或Windows Server 2003,所以我用0x0502定义了WINVER,但我仍然得到相同的错误。

我在这里错过了什么?

提前感谢!

您显然错过了MSDN文档中DisconnectEx()函数的注释:

备注: DisconnectEx函数的函数指针必须为在运行时通过调用WSAIoctl函数获得SIO_GET_EXTENSION_FUNCTION_POINTER操作码。输入传递给WSAIoctl函数的缓冲区必须包含WSAID_DISCONNECTEX,全局唯一标识符,其值为标识DisconnectEx扩展功能。关于成功,WSAIoctl函数返回的输出包含一个指向DisconnectEx函数。WSAID_DISCONNECTEX GUID定义在Mswsock.h头文件

请注意,DisconnectEx()的MSDN文档没有在Requirements部分下指定库。这意味着您必须在运行时通过WSAIoctl()函数动态加载该函数以获得函数指针。