2013-06-12 2 views
1

Вчера я попытался создать сервер сокетов на C++, но при компиляции я получаю ошибки. Ошибки:C++ WinSock2 Ошибки

Ошибка 6 Ошибка LNK2019: неразрешенный внешний символ _ имп _socket @ 12 ссылка в функции "общественности: статическая неподписанных долгое __cdecl Env :: GetSocket (аннулируются)" (? GetSocket @ ENV @@ SAKXZ) C: \ Users \ JoshuaTha \ Documents \ Visual Studio 2010 \ Projects \ HabboV5 \ HabboV5 \ Network.obj HabboV5

ошибка 5 ошибка LNK2019: неразрешенный внешний символ _ имп _listen @ 8 ссылается в функции «общественность: пустота __thiscall Network :: Start (void) "(? Start @ Network @@ QAEXXZ) C: \ Users \ JoshuaTha \ Documents \ Visual Studio 2010 \ Projects \ HabboV5 \ HabboV5 \ Network.obj HabboV5

Ошибка 4 ошибки LNK2019: неразрешенный внешний символ _ imp _htons @ 4 ссылка в функции «public: void __thiscall Network :: Start (void)» (? Start @ Network @@ QAEXXZ) C: \ Users \ JoshuaTha \ Documents \ Visual Studio 2010 \ Projects \ HabboV5 \ HabboV5 \ Network.obj HabboV5

ошибка 3 ошибка LNK2019: неразрешенный внешний символ _ имп _bind @ 12 ссылки в функции "общественности: аннулированию __thiscall Network :: Start (недействительными)" (? Start @ Network @@ QAEXXZ) C: \ Users \ JoshuaTha \ Documents \ Visual Studio 2010 \ Projects \ HabboV5 \ HabboV5 \ Network.obj HabboV5

Ошибка 2 ошибка LNK2001: неразрешенный внешний символ "public: static class Network * Env :: Network "(? Network @ Env @@ 2PAV0 @ A) C: \ Users \ JoshuaTha \ Documents \ Visual Studio 2010 \ Projects \ HabboV5 \ HabboV5 \ HabboV5.obj HabboV5

Ошибка 7 ошибка LNK1120: 5 нерешенных C внешних включений: \ Users \ JoshuaTha \ Documents \ Visual Studio 2010 \ Projects \ HabboV5 \ Debug \ HabboV5.exe HabboV5

Мой главный класс .cpp:

// HabboV5.cpp : Defines the entry point for the console application. 
// 

#include "stdafx.h" 
#include <iostream> 
#include "Env.h" 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
cout.write("hi", 2); 
cout << "Hello World!" << endl; 

Env::Network = new Network(); 
Env::Network->Start(); 

while (1) 
{ 
    char input[256]; 
    cin.getline(input, 256); 
} 
} 

Network.h:

#pragma once 
#include <WinSock2.h> 

class Network 
{ 
private: 
    SOCKET socket; 
public: 
    Network(void); 
    void Start(); 
}; 

Network.cpp:

#include "StdAfx.h" 
#include "Network.h" 
#include <WinSock2.h> 
#include "Env.h" 

Network::Network(void) 
{ 
} 

void Network::Start() 
{ 
    this->socket = Env::GetSocket(); 

    SOCKADDR_IN sInformation; 

    sInformation.sin_family = AF_INET; 
    sInformation.sin_addr.s_addr = INADDR_ANY; 
    sInformation.sin_port = htons(30000); 

    bind(this->socket, (SOCKADDR*) (&sInformation), sizeof(sInformation)); 
    listen(this->socket, 10); 
} 

Env.h:

#include "stdafx.h" 
#include "Network.h" 
#include <WinSock2.h> 

class Env 
{ 
public: 
    static Network* Network; 

    static DWORD GetSocket() 
    { 
     return socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
    } 
}; 
+1

Вы не указали имплицировать библиотеки DLL, определяющие материал сокета. Посмотрите msdn, что libs ho с winsock2 –

ответ

2

В опциях линкера (по проекту правой кнопкой мыши, линкер, вход), необходимо добавить wsock32.lib или ws2_32.lib в список входных файлов.

+0

Nevermind, он работает, спасибо. –

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