2009-04-27 2 views
0

Я пытаюсь скомпилировать этот код:Почему я получаю сообщение: неразрешенный внешний символ ошибки - 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); 
} 

И я получаю эту ошибку компоновщика: Linking ...
mongoose.obj: LNK2019 ошибки: неразрешенный внешний символ _send @ 16, указанный в функции _push

Что мне не хватает? Должно быть, это какая-то библиотека или что-то еще. Я просто не помню, что мне нужно добавить к моей ссылке.

ответ

6

Проблема в том, что компоновщик не может найти функцию send(). Вы включили правильные файлы заголовков, поэтому компилятор в порядке, но вы не связываетесь с соответствующими статическими библиотеками. Откройте параметры проекта, перейдите в раздел компоновщика, и добавьте правильную библиотеку в список библиотек, которые связаны в.

[Редактировать]

Правильная библиотека добавить в wsock32.lib.

+0

добавлено wsock32.lib http://www.codebase.com/support/kb/?article=C01060 –

2

Не совсем ясно, на какой вопрос вы действительно спрашиваете. Но похоже, что ваш компоновщик не может найти функцию «отправить» в любом месте, о котором было сказано, чтобы посмотреть.

1

Отличие от обычных ошибок заключается в том, что для его решения вам необходимо использовать компоновщик, а не компилятор и редактор кода.

Смежные вопросы