2009-04-27 82 views
0

我尝试编译这段代码:为什么我得到:解析外部符号错误 - Visual C

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:无法解析外部符号_send @ 16在函数_push中引用

我在想什么?它必须是一些lib或其他东西。我只是不记得我需要添加到我的链接。

回答

6

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

[编辑]

正确的库补充的是wsock32.lib

+0

added wsock32.lib http://www.codebase.com/support/kb/?article=C01060 – 2009-04-27 21:44:59

2

这并不完全清楚你实际问什么问题。但它看起来像你的链接器无法找到任何地方被称为“发送”功能。

1

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

相关问题