Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C++] aplikacja klient-serwer, brak biblioteki?

masvidal 11 Mar 2009 19:31 2366 5
  • #1 11 Mar 2009 19:31
    masvidal
    Poziom 9  

    Witam, mam pewien problem. Chce napisac aplikacje klient-server przy wykorzystaniu gniazd. Mam troche poradnikow przeznaczonych do tego celu, jednak juz na poczatku pojawia sie problem :/ przy probie kompilacji mam blad w linijce - adres.sin_addr.s_addr=inet_addr("128.110.10.1"); wyswietla mi blad "undefined reference to `_inet_addr@4' . Szukalem juz informacji na ten temat, jednak bezskutecznie, przypuszczam ze jest to blad zwiazany z brakiem jakiejs biblioteki. Dodam ze do kompilacji uzywam CodeBlocks. Z gory dziekuje za wskazowki

    0 5
  • #2 11 Mar 2009 20:56
    Anonymous
    Użytkownik usunął konto  
  • #3 11 Mar 2009 21:06
    Dr.Vee
    VIP Zasłużony dla elektroda

    Pod Unixem nie potrzeba żadnej dodatkowej biblioteki.
    Pod windowsem (którego nie znam, tylko skorzystałem z google) trzeba dołączyć bibliotekę Ws2_32.

    http://lmgtfy.com/?q=windows+inet_addr

    Pozdrawiam,
    Dr.Vee

    0
  • #4 12 Mar 2009 00:31
    masvidal
    Poziom 9  

    Zalozmy ze chce skompilowac taki kod w CodeBlocks (pod Windows)

    Code:

    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <windows.h>
    #include <winsock2.h>

    using namespace std;

    int main()
    {

        struct sockaddr_in adres;

        adres.sin_addr.s_addr=inet_addr("128.110.10.1");

        cout<<adres.sin_addr.s_addr<<endl;

    }



    wtedy wywala blad "undefined reference to `_inet_addr@4' ". W pliku naglowkowym winsock2.h funkcja ta jest zadeklarowana w nastepujacy sposob "WINSOCK_API_LINKAGE unsigned long PASCAL inet_addr(const char*);". Ewentualnie gdzie w C::B dodac ta biblioteke jesli jest potrzebna, bo wydaje mi sie ze skoro jest multiplatformowy to chyba mozna sie obejsc ;)

    0
  • #5 12 Mar 2009 01:13
    KowalD
    Poziom 17  

    no jak wedlug mnie to do opcji linkowania musisz dodac biblioteke ws2_32.lib... ale w codeblocks to nie mam pojecia jak to zrobic

    0
  • #6 12 Mar 2009 13:31
    masvidal
    Poziom 9  

    hmm, jak wkleje przykladowy kod klienta z forum "tcp_klient.cpp" do devcpp to otrzymuje podobne bledy czyli to pewnie biblioteka, innego pomyslu nie mam niestety.

    Code:

    :tcp_klient.cpp: undefined reference to `WSAStartup@8'
    :tcp_klient.cpp: undefined reference to `socket@12'
    :tcp_klient.cpp: undefined reference to `WSAGetLastError@0'
    :tcp_klient.cpp: undefined reference to `htons@4'
    :tcp_klient.cpp: undefined reference to `inet_addr@4'
    :tcp_klient.cpp: undefined reference to `gethostbyname@4'
    :tcp_klient.cpp: undefined reference to `connect@12'
    :tcp_klient.cpp: undefined reference to `WSAGetLastError@0'
    :tcp_klient.cpp: undefined reference to `send@16'
    :tcp_klient.cpp: undefined reference to `WSAGetLastError@0'
    :tcp_klient.cpp: undefined reference to `recv@16'
    :tcp_klient.cpp: undefined reference to `WSAGetLastError@0'
    :tcp_klient.cpp: undefined reference to `closesocket@4'
    :tcp_klient.cpp: undefined reference to `WSACleanup@0'



    edit: postanowilem odpalic najprostszy przyklad w przeinstalowanym visualu, do ktorego dodalem biblioteki i pliki naglowkowe z SDK i dziala ;) wiec chyba napisze to w VC++, jednak potem moze byc problem przerzucic to do C::B.

    0