не могу присоеденить библиотеку

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by al072, 10 Mar 2010.

  1. al072

    al072 New Member

    Joined:
    25 May 2008
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    Не могу скомпилировать следующий код:
    Code:
    #include <winsock>
    #pragma comment (lib,"WSock32.Lib")
    #include <iostream>
    
    
    using namespace std;
    
    void main()
    {
      WSAData WSData;
      WSAStartup(0x101,&WSData);
      SOCKET S = socket(AF_INET,SOCK_STREAM,0);
      sockaddr_in SA;
      SA.sin_family=AF_INET;
      SA.sin_port=htons(3135);
      SA.sin_addr.S_un.S_addr=INADDR_ANY;
      bind(S,(sockaddr*)&SA,sizeof(SA));
      listen(S,SOMAXCONN);
     
      SOCKET NS;
      while ((NS = accept(S,0,0))!=INVALID_SOCKET)
      {
        cout<<"-------------------->\n";
        cout<<"Connected...\n";
        char n = 0;
        recv(NS,&n,1,0);
        cout<<"Received Length = "<< int(n) <<"\n";
        char* a=new char[100];
        recv(NS,a,n,0);
        cout<<"Received: \"";
        for (int i=0;i<n;i++) { cout<<a[i]; }
        cout<<"\"\n";
        closesocket(NS);
        cout<<"-------------------->\n";
      }
      closesocket(S);
      int n;
    компилятор ругается: fatal error C1083: Cannot open include file: 'winsock': No such file or directory

    каким образом мне подключить winsock? работаю в VS2008(VC++)
     
  2. zeppe1in

    zeppe1in Elder - Старейшина

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    #include <winsock2.h>

    #pragma comment (lib, "ws2_32.lib")
     
  3. al072

    al072 New Member

    Joined:
    25 May 2008
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    Самое интересное, что так тоже пробовал!в таком случаее выдает другую ошибку: fatal error C1075: end of file found before the left brace '{' at 'c:\users\alex\documents\visual studio 2008\projects\exercise\exercise\exersice.cpp(9)' was matched

    не понятно почему компилятор ругается на какие-то скобки?
     
  4. RDL_Rider

    RDL_Rider New Member

    Joined:
    21 Jun 2009
    Messages:
    100
    Likes Received:
    3
    Reputations:
    0
    в конце нет закрывающей? :D
     
  5. al072

    al072 New Member

    Joined:
    25 May 2008
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    Да бывает... забыл скобку закрывающую функцию маин

    Возникла следующая проблема. не могу скомпилить релиз так как компилятор выдает следующее сообщение:
    The thread 'Win32 Thread' (0xb9c) has exited with code -1073741510 (0xc000013a).
    The program '[3940] exercise.exe: Native' has exited with code -1073741510 (0xc000013a).

    То есть моя программа если все в порядке должна завершиться с кодом "0". в чем может быть причина?
     
    #5 al072, 10 Mar 2010
    Last edited: 10 Mar 2010
  6. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    чтто я у тя не виду в конец слово return в котором ты передаешь статус завершения
     
  7. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Я конечно могу ошибаться(все таки C++ плохо еще знаю), но ты пробовал сделать что бы все таки main возращало что то.
    int main()
    .....
    return 0;
    ? Попробуй, вдруг поможет...
     
  8. al072

    al072 New Member

    Joined:
    25 May 2008
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    Пробовал конечно! на это компилятор как не странно говорит, что main() не должна ничего возвращать.. ну это с одной строны понятно, потомучто она задана как void, что само собой значит-функция не имеет аргументов и не возвращает значения!
     
  9. nMonkn

    nMonkn Member

    Joined:
    4 Jan 2010
    Messages:
    16
    Likes Received:
    5
    Reputations:
    0
    Компилил в релиз в vc2005
    Проверь что точно создан консольный проэкт.
    Компилил этот код.

    Code:
    #include <winsock2.h>
    #pragma comment (lib,"ws2_32.lib")
    #include <iostream>
    
    using namespace std;
    
    void main()
    {
      WSAData WSData;
      WSAStartup(0x101,&WSData);
      SOCKET S = socket(AF_INET,SOCK_STREAM,0);
      sockaddr_in SA;
      SA.sin_family=AF_INET;
      SA.sin_port=htons(3135);
      SA.sin_addr.S_un.S_addr=INADDR_ANY;
      bind(S,(sockaddr*)&SA,sizeof(SA));
      listen(S,SOMAXCONN);
     
      SOCKET NS;
      while ((NS = accept(S,0,0))!=INVALID_SOCKET)
      {
        cout<<"-------------------->\n";
        cout<<"Connected...\n";
        char n = 0;
        recv(NS,&n,1,0);
        cout<<"Received Length = "<< int(n) <<"\n";
        char* a=new char[100];
        recv(NS,a,n,0);
        cout<<"Received: \"";
        for (int i=0;i<n;i++) { cout<<a[i]; }
        cout<<"\"\n";
        closesocket(NS);
        cout<<"-------------------->\n";
      }
      closesocket(S);
      int n;
    }
    
     
  10. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Не может компилятор такого выдать. Это дебаггер после запуска выдает наверное.
    "void main()" измени на "int main()" и возврат в конце добавь.

    Еще погугли WSACleanup(void) и shutdown(SOCKET, int)
     
    #10 Meecript_, 11 Mar 2010
    Last edited: 11 Mar 2010
  11. al072

    al072 New Member

    Joined:
    25 May 2008
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    Вопрос решился путем ребилда проекта! больше ошиок нет все компилиться и работает! всем спасибо за помощь!!!