2013-06-12 37 views
1

昨天我试着在C++中创建一个套接字服务器,但是在编译时出现错误。 的错误:C++ WinSock2错误

错误6错误LNK2019:解析外部符号_ 小鬼 _socket @函数引用12 “市民:静态无符号长__cdecl信封:: GetSocket(无效)”(?GetSocket @信封@@ SAKXZ) C:\ Users \用户JoshuaTha \文档\ Visual Studio 2010的\项目\ 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的\项目\ HabboV5 \ HabboV5 \ Network.obj HabboV5

错误3错误LNK2019:解析外部符号_ 小鬼 _bind @ 12函数引用 “市民:无效__thiscall网::开始(无效)” (?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:\用户\ JoshuaTha \文档\ Visual Studio 2010的\项目\ HabboV5 \调试\ 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的implib。看看MSDN什么库豪与winsock2 –

回答

2

在连接选项(在该项目上单击右键,链接,输入),你需要添加wsock32.libws2_32.lib输入文件的列表。

+0

没关系,它的工作原理,谢谢。 –