Windows API:对DisconnectEx的未定义引用

时间:2011-08-23 02:30:25

标签: c++ c winapi mingw winsock

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

undefined reference to `DisconnectEx@16'

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

-lws2_32 -lwsock32 -lmswsock

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

我在这里缺少什么?

提前致谢!

1 个答案:

答案 0 :(得分:2)

您显然遗漏的是DisconnectEx() function的   

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

请注意,DisconnectEx()的MSDN文档未在“要求”部分下指定库。这意味着您必须在运行时通过WSAIoctl()function动态加载此函数以获取函数指针。