Форум программистов, компьютерный форум CyberForum.ru

Ошибка LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Oleg34
1 / 1 / 0
Регистрация: 22.12.2010
Сообщений: 128
05.11.2013, 12:43     Ошибка LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup #1
Здравствуйте! При запуске программы для использования классических блокирующих сокетов в MS Visual C++, выдает ошибку LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup.
Перерыл форум, но ничего подходящего для решения проблемы не нашел.
У меня Microsoft Visual Studio 2010 Premium, скачана с оф.сайта. Проект создаю стандартно:
Ctr+N ->Visual C++ ->Консольное приложение Win32 ->Даю_имя -> Далее ->Консольное приложение Win32, Предварительно скомпилированный заголовок.
Вот код проекта. Сам проект в прикрепленном файле.
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
// serverWinSock.cpp: определяет точку входа для консольного приложения.
//Пример использования классических блокирующих сокетов в MS Visual C
 
 
#include "stdafx.h"
#include <WinSock2.h>
#include<stdio.h>
#include<WinBase.h>
#pragma comment (lib, "ws2_32.lib")
#define BUFNAME 5 // длина буфера приема
#define HOSTNAME "localhost" //имя сервера
 
//int _tmain(int argc, _TCHAR* argv[])
int main(int argc, char** argv)
{
 
    SOCKET mysock,mysock1; //две переменные типа "сокет"
    WSADATA wsaData; //данные возвращаемые ф-ей инициализации
    struct sockaddr_in myaddr,myaddr1; // адреса сокетов
    int err,len1,len2; //Код ошибки длина сообщения
    char buf[BUFNUM+1]={'_','_','_','_','_','\0'};//сначала в буфере только прочерки и 
 
ноль в конце
    struct hostent FAR *hp;
 
    err=WSAStartup(0x0101, &wsaData); // инициализируем библиотеку Winsock
 
    if(err<0)
    {
        printf("Winsock starting error %i", WSAGetLasatError());
        exit(1);
    }
 
    mysock=socket(AF_INET,SOCK_STREAM,0); // создали сокет
    //область имен -INET, тип-сустановлением соединения, протокол-по умолчанию
 
    if (mysock==INVALID_SOCKET)
    {
        printf("\nCannot create socket, error %i\n",WSAGetLastError());
        WSACleanup();
        exit(1);
    }
 
    hp=gethostbyname(HOSTNAME); // перевели имя хоста в адрес
    memcpy(&myaddr.sin_addr,hp->h_addr,hp->h_length);
    myaddr.sin_family=hp->h_addrtype;
    //myaddr.sin_addr.s_addr=INADDR_ANY;//если хотим устанавливать
    //соединение с любой сетевой службой. то последние две строки
    //надо заменить данной функцией
    myaddr.sin_port=htons(1000);//номер порта переведенный в "сетевой порядок"
    err=bind(mysock,(struct sockaddr *) &myaddr, sizeof(myaddr)); // связываем сокет
 
    if(err<0)
    {
        printf("\nCannot bind socket, error %i\n",WSAGetLastError());
        WSACleanup();
        exit(1);
    }
 
    ioctlsocket(mysock,FIONBIO,0);// устанавливаем блокирующий режим
    printf("\nListening... \n");
    err=listen(mysock,1);// переводим сокет в прослушивающий режим
                         //длина очереди-только один вызов
 
    if (err<0)
    {
        printf("\nCannot listen socket, error %i\n",WSAGetLastError());
        WSACleanup();
        exit(1);
    }
    len1=sizeof(myaddr1);
    mysock1=accept(mysock, (struct sockaddr FAR*)&myaddr1,&len1);
    // приняли запрос на соединение
    // accept ждет, пока не будет выполнен connect клиента
 
    if(mysock==INVALID_SOCKET)
    {
        printf("\nError accepting connection, error %i\n",WSAGetLastError());
        WSACleanup();
        exit(1);
    }
    printf("\nAccepted %i.%i.%i.%i\n",myaddr1.sin_addr_.S_un.S_un_b.s_b1,
                                      
 
myaddr1.sin_addr_.S_un.S_un_b.s_b2,
                                      
 
myaddr1.sin_addr_.S_un.S_un_b.s_b3,
                                      
 
myaddr1.sin_addr_.S_un.S_un_b.s_b4,);
    //kто нас вызвал
 
    Sleep(1000);
    printf("\nWaiting message... \n");
    len1=0;
    while(len1<BUFNUM)// принимаем соообщение символ за символом
    {
        len2=recv(mysock1,&buf[len1],BUFNUM-len1,0);
        len1+=len2;
        printf("\nReceived message: \t%s,\tlength is %i\n",buf,len2);
            //принять всю строку нельзя, так как сообщения в сети могут
            //дробится на пакеты и наоборот слипаться
    }
    buf[BUFNUM]='\0'; // конец строки
    Sleep(1000); //чтобы на экране все менялось не слишком быстро
    printf("\nReceived message: \t%s,\tlength is %i\n",buf,len1);
    shutdown(mysock1,2); //закрыли сокет для чтения и для записи-2
    closesocket(mysock1);
    closesocket(mysock);
    WSACleanup();//закрыли библиотеку
    Sleep(5000);//подождали 5 сек
 
 
    return 0;
}
Что я не так сделал? И почему при компиляции проекта компилируется _tmain(), а не main(). И имеет ли это какое либо принципиальное значение. Я пробовал по разному. В коде видно, что закоментил функции.
Заранее всем спасибо.
Вложения
Тип файла: zip serverWinSock.zip (1.34 Мб, 4 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2013, 12:43     Ошибка LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup
Посмотрите здесь:

Ошибка линковщика(error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup) C++
Ошибка линковщика LNK2019: ссылка на неразрешенный внешний символ C++
C++ Ссылка на неразрешенный внешний символ _main в функции
C++ Ошибка при работе со структурами: error LNK2019: ссылка на неразрешенный внешний символ _main
C++ Ошибка LNK2019: ссылка на неразрешенный внешний символ
Error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup C++
C++ Error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup
C++ Ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
05.11.2013, 15:24     Ошибка LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup #2
Цитата Сообщение от Oleg34 Посмотреть сообщение
И почему при компиляции проекта компилируется _tmain()
раскомментируйте обратно), то что компилируется зависит от того как создан проект
Цитата Сообщение от Oleg34 Посмотреть сообщение
C++
1
#pragma comment (lib, "ws2_32.lib")
вместо этого попробуйте в настройках проекта добавить либу руками
Oleg34
1 / 1 / 0
Регистрация: 22.12.2010
Сообщений: 128
05.11.2013, 20:14  [ТС]     Ошибка LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup #3
Не могу найти где это делается. Раньше вроде как бы так:
проект - свойства - свойства конфигурации - компоновщик - ввод - дополнительные зависимости
Сейчас у меня нет этих вкладок. Подскажите как это сделать, подключить вручную?
Yandex
Объявления
05.11.2013, 20:14     Ошибка LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup
Ответ Создать тему
Опции темы

Текущее время: 09:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru