když kompiluju zdroják níže linker píše chybové hlášky "undefined reference" ke všem funkcím pro práci se síťovým spojením, přičemž funkci to uvede takto:
Kód: Vybrat vše
_NazevFunkce@cisloMáte s tím někdo skušenost? Předem dekuji.
zdrojový kod:
Kód: Vybrat vše
#include <iostream>
#include <string>
#include <windows.h>
#define BUFSIZE 1000
using namespace std;
int main(int argc, char *argv[])
{
WORD wVersionRequested = MAKEWORD(1,1); // Číslo verze
WSADATA data; // Struktura s info. o knihovně
string text; // Odesílaný a přijímaný text
hostent *host; // Vzdálený počítač
sockaddr_in serverSock; // Vzdálený "konec potrubí"
int mySocket; // Soket
int port; // Číslo portu
char buf[BUFSIZE]; // Přijímací buffer
int size; // Počet přijatých a odeslaných bytů
text="GET /bagr.txt host:localhost";
// Připravíme sokety na práci
if (WSAStartup(wVersionRequested, &data) != 0)
{
cout << "Nepodařilo se inicializovat sokety" << endl;
// Podle všeho, zde se WSACleanup volat nemusí.
return -1;
}
port = 80; // atoi("80");
// Zjistíme info o vzdáleném počítači
if ((host = gethostbyname("http://localhost")) == NULL)
{
cerr << "Špatná adresa" << endl;
WSACleanup();
return -1;
}
// Vytvoříme soket
if ((mySocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1)
{
cerr << "Nelze vytvořit soket" << endl;
WSACleanup();
return -1;
}
// Zaplníme strukturu sockaddr_in
// 1) Rodina protokolů
serverSock.sin_family = AF_INET;
// 2) Číslo portu, ke kterému se připojíme
serverSock.sin_port = htons(port);
// 3) Nastavení IP adresy, ke které se připojíme
memcpy(&(serverSock.sin_addr), host->h_addr, host->h_length);
// Připojení roury
if (connect(mySocket, (sockaddr *)&serverSock, sizeof(serverSock)) == -1)
{
cerr << "Nelze navázat spojení" << endl;
WSACleanup();
return -1;
}
// Odeslání dat
if ((size = send(mySocket, text.c_str(), text.size() + 1, 0)) == -1)
{
cerr << "Problém s odesláním požadavku" << endl;
WSACleanup();
return -1;
}
cout << "Požadavek odeslán, " << size <<"b"<< endl;
// Příjem dat
text = "";
while (((size = recv(mySocket, buf, BUFSIZE, 0)) != 0) && (size != -1))
{
cout << "Přijato " << size << endl;
text += buf;
}
if (size == -1)
{
cout << "Nelze přijmout odpoved" << endl;
}
else
{
cout<< "Prijata odpoved:\n";
cout<< text;
}
// Uzavřu spojení
closesocket(mySocket);
WSACleanup();
cout << endl << text << endl;
return 0;
}

