1

我尝试编译这段代码:

static uint64_t
push(int fd, SOCKET sock, SSL *ssl, const char *buf, uint64_t len)
{
    uint64_t    sent;
    int     n, k;

    sent = 0;
    while (sent < len) {

        /* How many bytes we send in this iteration */
        k = len - sent > INT_MAX ? INT_MAX : (int) (len - sent);

        if (ssl != NULL) {
            n = SSL_write(ssl, buf + sent, k);
        } else if (fd != -1) {
            n = write(fd, buf + sent, k);
        } else {
            n = send(sock, buf + sent, k, 0);
        }

        if (n < 0)
            break;

        sent += n;
    }

    return (sent);
}

我得到这个链接器错误: Linking...
mongoose.obj : error LNK2019: unresolved external symbol _send@16 referenced in function _push

我错过了什么?它必须是一些库或其他东西。我只是不记得我需要在链接中添加什么。

4

3 回答 3

6

问题是链接器找不到该send()函数。您已经包含了正确的头文件,所以编译器没问题,但是您没有链接到正确的静态库。打开您的项目设置,转到链接器部分,并将适当的库添加到链接的库列表中。

[编辑]

要添加的正确库是wsock32.lib.

于 2009-04-27T21:32:54.483 回答
2

目前尚不完全清楚您实际上在问什么问题。但看起来您的链接器在被告知要查看的任何地方都找不到“发送”功能。

于 2009-04-27T21:32:08.013 回答
1

与正常错误的区别在于您需要使用链接器,而不是编译器和代码编辑器来解决它。

于 2009-04-27T21:32:11.647 回答