2012-11-10 38 views
2

我想打開套接字。但是它在WSASTartup,WSAGetLastError,套接字,htons處給出鏈接錯誤(LNK2019:函數'function'中引用的未解析外部符號'符號')。我做錯了什麼?無法打開插座。 C++

這裏是一個源代碼

#include <iostream> 
#include <string> 
#include <winsock2.h> 
#include <Windows.h> 
using namespace std; 
string server; int port; 
void login_info() 
{ 
    cout << "Enter IP Address: "; 
    cin >> server; 
    cout << "\nEnter Port: "; 
    cin >> port; 
    cout << endl; 
} 

int main()  
{ 
    char buffer[1024]; 
    login_info(); 
    cout << "Trying to connect...\n"; 
    if (WSAStartup(0x202, (WSADATA *) &buffer[0])) //Оно что-то запускает. Знать бы что.. 
    { 
     cout << "WSAStart error #" << WSAGetLastError(); //Но если оно пизданётся, то появится ошибка :3 
     return -1; 
    } 
    //Тут предположительно поднимается сам сокет. 
    SOCKET connection; 
    connection=socket(AF_INET, SOCK_STREAM, 0); 
    //Проверка на то, что он есть? 
    if (socket<0)  
    { 
     cout << "Socket error #" << WSAGetLastError(); //Но если оно пизданётся, то появится ошибка :3 
     return -1; 
    } 
    sockaddr_in dest_addr; //Тут опять происходит, что-то мне непонятное.. 
    dest_addr.sin_family=AF_INET;       
    dest_addr.sin_port= htons (port); 
    HOSTENT *hst; 
    return 0; 
} 
+2

聽起來像你缺少鏈接中的一個庫... – Caribou

+0

你知道哪一個? – Endiny

回答

3

我認爲你需要在winsock的庫ws_32.lib鏈接。我不確定你使用的是什麼工具/ IDE,但是how to link winsock.lib?有一些細節。

MSDN:http://msdn.microsoft.com/en-us/library/windows/desktop/ms737629(v=vs.85).aspx

編輯 - 可能需要尋找WS2_32.LIB現在。

+0

謝謝你。但似乎沒有ws_32.lib(或者ws32.lib)對我來說。我正在使用Visual Studio 2012 – Endiny

+0

我使用vs2012 express讓我檢查... – Caribou

+0

@Endiny試試Ws2_32.lib – Caribou