我正在开发一个使用Windows套接字的应用程序。我的socket类有一个名为Disconnect的方法,它使用DisconnectEx,但我在链接时遇到以下错误:
undefined reference to `DisconnectEx@16'
我正在使用MinGW,我正在将我的应用程序与以下库链接:
-lws2_32 -lwsock32 -lmswsock
在msdn上说这个功能所需的最低版本是Windows XP或Windows Server 2003,所以我用0x0502定义了WINVER,但我仍然得到同样的错误。
我在这里缺少什么?
提前致谢!
答案 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动态加载此函数以获取函数指针。