Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для Megalodon
0 / 0 / 0
Регистрация: 02.05.2014
Сообщений: 10

C++ winsock. Ошибка сборщика error LNK2019

01.04.2015, 13:50. Показов 1807. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Я делаю программу по отправке письма на эл. почту посредством сокета. Нашел данный код в недрах Интернета:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#define _CRT_SECURE_NO_WARNINGS
 
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
 
WSADATA ws;
SOCKET s;
struct sockaddr_in addr;
hostent *d_addr;
char text[1024];
 
class mainClass
{
public:
    int main(); // Function declaration
};
 
int mainClass::main()
{
    // инициализируем сокеты
    if (FAILED(WSAStartup(MAKEWORD(1, 1), &ws)))
    {
        printf("Error in WSAStartup(...)\n");
        return 1;
    }
 
    // создаем сокет
    s = socket(AF_INET, SOCK_STREAM, 0);
    if (s == INVALID_SOCKET)
    {
        printf("Error in socket(...)\n");
        return 1;
    }
 
    // получаем адрес сервера
    d_addr = gethostbyname("smtp.mail.ru");
    if (d_addr == NULL)
    {
        printf("Error in gethostbyname(...)\n");
        return 1;
    };
 
    // заполняем параметры адреса
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = *((unsigned long *)d_addr->h_addr);
    addr.sin_port = htons(25);
 
    // устанавливаем соединение
    if (SOCKET_ERROR == (connect(s, (sockaddr *)&addr,
        sizeof (addr))))
    {
        printf("Error in connect(...)\n");
        return 1;
    }
 
    // ждем ответ от сервера
    recv(s, text, sizeof(text), 0);
    printf("recv - %s", text);
 
    // приветствуем сервер
    strcpy(text, "HELO smtp.mail.ru\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // ждем подтверждение от сервера
    recv(s, text, sizeof(text), 0);
    printf("recv - %s", text);
 
    // начинаем отправлять конверт состоящий из полей
    // MAIL FROM: и RCPT TO: После каждого поля ждем
    // подтверждение
 
    // сообщаем отправителя
    strcpy(text, "MAIL FROM: [email]sender@mail.ru[/email]\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // ждем подтверждение от сервера
    recv(s, text, sizeof(text), 0);
    printf("recv - %s", text);
 
    // сообщаем получателя
    strcpy(text, "RCPT TO: [email]receiver@mtu-net.ru[/email]\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // ждем подтверждение от сервера
    recv(s, text, sizeof(text), 0);
    printf("recv - %s", text);
 
    // подаем команду, что готовы начать передачу письма
    strcpy(text, "DATA\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // ждем подтверждение от сервера
    recv(s, text, sizeof(text), 0);
    printf("recv - %s", text);
 
    // передаем заголовок
 
    // от кого письмо
    strcpy(text, "FROM: [email]sender@mail.ru[/email]\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // кому письмо
    strcpy(text, "TO: [email]receiver@mtu-net.ru[/email]\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // тема письма
    strcpy(text, "SUBJECT: test\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // текст письма
    strcpy(text, "Hi!\nIt is a message for you\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // говорим, что закончили
    strcpy(text, "\r\n.\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
    recv(s, text, sizeof(text), 0);
    printf("recv - %s", text);
 
    // прощаемся с сервером
    strcpy(text, "QUIT");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // закрываем сокет
    closesocket(s);
 
    return 0;
}
В оригинале выгладит без класса mainClass, но получив ошибки сборщика и прочитав о них на stack overflow, объявил класс и функцию. Но затем всплыли "error LNK2019: unresolved external symbol _closesocket@4 referenced in function "public: int __thiscall mainClass::main(void)" (?main@mainClass@@QAEHXZ)". Не могу разобраться в чём проблема и в Интернете похожих проблем не нашел , прошу помочь.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.04.2015, 13:50
Ответы с готовыми решениями:

В функции отправки письма ошибка: error LNK2019: ссылка на неразрешенный внешний символ _connect@1
Просто мирная функция отправки мыла, и тут такие плохие ошибки. У меня VS2012 (МОЖЕТ ЛУЧШЕ ВЕРНУТЬСЯ ВООБЩЕ НА 2010?) //...

Ошибка error LNK2019:
Не могу понять с чего выдает эту ошибку. Все правильно задано ! В чем дело никто не подскажет?

Ошибка 2 error LNK2019, не пойму в чем ошибка
Выдает такую ошибку: Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ &quot;int __cdecl game(void)&quot; (?game@@YAHXZ) в...

5
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
01.04.2015, 14:03
Лучший ответ Сообщение было отмечено Megalodon как решение

Решение

Вот так всегда - в интернете накопаем, а базы не знаем. В опциях проекта, в Linker -> Input -> Additional Dependencies добавь Ws2_32.lib;
На русском не знаю, какие там меню, думаю найдешь.
1
 Аватар для Megalodon
0 / 0 / 0
Регистрация: 02.05.2014
Сообщений: 10
01.04.2015, 14:08  [ТС]
Спасибо, решили проблему ! У меня как раз англоязычная версия
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
01.04.2015, 22:23
Цитата Сообщение от Megalodon Посмотреть сообщение
В оригинале выгладит без класса mainClass, но получив ошибки сборщика и прочитав о них на stack overflow, объявил класс и функцию.
Так делать нельзя. main должна быть свободной функцией.
0
 Аватар для Megalodon
0 / 0 / 0
Регистрация: 02.05.2014
Сообщений: 10
02.04.2015, 00:21  [ТС]
Да, я сделал как было изначально, всё скомпилилось. Но программа упорно не хочет доставлять мои сообщения. Пробовал бесплатные SMTP сервера, не отправляется. Я уже скачал и установил SMTP сервер, вроде бы настроил, но не пашет. Садовая моя голова
Сервер выдаёт, что сообщение в очереди "Сообщение, вероятно, было доставлено получателю и больше не доступны в очереди". И естественно оно так и не приходит мне.
0
1 / 1 / 1
Регистрация: 02.04.2015
Сообщений: 5
04.04.2015, 23:20
Попробуй отправить письмо ручками, используя telnet на 25 порт:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
telnet example.com 25
ehlo example.com
mail from: [email]username@example.com[/email]
rcpt to: [email]friend@hotmail.com[/email], [email]friend2@yahoo.com[/email]
data
Subject: My Telnet Test Email
 
Hello,
 
This is an email sent by using the telnet command.
 
Your friend,
Me
 
.
quit
Ахтунг: Не знаю как убрать [email] выше (это не нужно здесь, вставляется автоматом форумом).

Можешь отправить сам себе письмо прямо в ящик мыльного провайдера, например, на mail.ru:

From: http://www.hashemian.com/tools/domain-email.php
Domain Mail Server/Exchanger for: mail.ru

mail.ru. IN MX 10 mxs.mail.ru.
--> mxs.mail.ru. = 217.69.139.150
--> mxs.mail.ru. = 94.100.180.150

mail.ru. IN A 217.69.139.200
mail.ru. IN A 94.100.180.202
mail.ru. IN A 217.69.139.202
mail.ru. IN A 94.100.180.200
Подключайся на адрес в MX рекорде с помощью telnet mxs.mail.ru 25 и отправляй сам себе мыло, которое сразу увидишь в ящике.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2015, 23:20
Помогаю со студенческими работами здесь

Ошибка компиляции: error LNK2019 VS2013
Кратко: Делаю простые моды для игр. Есть открытый исходный код клиента одной игры, который &quot;патчит&quot; её (Modern Warfare 2). В...

Ошибка линковки error LNK2001 и LNK2019
Здравствуйте! Написана программа по определению контура руки.использую opencv 2.4.6 Собираю проект написанный на С++ в QT creatore ...

Ошибка при компиляции error LNK2019
IMG.obj : error LNK2019: ссылка на неразрешенный внешний символ &quot;unsigned long __cdecl GTASA_CRC32_fromUpCaseString(char const *)&quot;...

Ошибка: error LNK2019, почему не работает деструктор?
# include &lt;iostream&gt; # include &lt;cstdlib&gt; # include &lt;fstream&gt; using namespace std; class Skids { int StartOfRep; int...

Ошибка: error LNK2019: unresolved external symbol
Здравствуйте, Подскажите пожалуйста, у меня есть написанная программа на с++, она компилируется и все в порядке, но мне нужно его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru