为什么我得到:未解析的外部符号错误 - C.

时间:2009-04-27 21:27:54

标签: external symbols

我尝试编译此代码:

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);
}

我收到此链接器错误: 链接...
mongoose.obj:错误LNK2019:函数_push中引用了未解析的外部符号_send @ 16

我错过了什么?它必须是一些lib或者什么。我只是不记得我需要添加到我的链接中。

3 个答案:

答案 0 :(得分:6)

问题是链接器无法找到send()函数。您已经包含了正确的头文件,因此编译器没问题,但是您没有使用正确的静态库进行链接。打开项目设置,转到链接器部分,并将正确的库添加到链接的库列表中。

<强> [编辑]

要添加的正确库是wsock32.lib

答案 1 :(得分:2)

目前还不完全清楚你究竟在问什么问题。但看起来您的链接器无法在任何被告知的位置找到“发送”功能。

答案 2 :(得分:1)

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