【问题标题】:Windows API: Undefined reference to DisconnectExWindows API:对 DisconnectEx 的未定义引用
【发布时间】:2011-11-01 14:41:08
【问题描述】:

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

undefined reference to `DisconnectEx@16'

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

-lws2_32 -lwsock32 -lmswsock

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

我在这里缺少什么?

提前致谢!

【问题讨论】:

    标签: c++ c winapi mingw winsock


    【解决方案1】:

    您显然错过的是 DisconnectEx() function 的 MSDN 文档中的此注释:

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

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

    【讨论】:

    • 是的,我的错,我错过了......凌晨 3:30 很难睁开眼睛嘿嘿。谢谢。
    • @Leandro F. Vaz:没问题。这只是一个友好的提醒,请仔细阅读文档。 :-)
    猜你喜欢
    • 1970-01-01
    • 2016-02-24
    • 2020-10-15
    • 2014-09-19
    • 2017-04-25
    • 2021-02-18
    • 2011-03-27
    • 2022-01-22
    • 2016-04-04
    相关资源
    最近更新 更多