2012-11-10 40 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