logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[C++] Błąd undefined reference to `_inet_addr@4' w CodeBlocks przy kompilacji

masvidal 11 Mar 2009 19:31 2852 5
REKLAMA
  • #1 6268405
    masvidal
    Poziom 10  
    Posty: 8
    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
  • REKLAMA
  • #2 6268942
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 6269018
    Dr.Vee
    VIP Zasłużony dla elektroda
    Posty: 1784
    Pomógł: 307
    Ocena: 76
    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
  • REKLAMA
  • #4 6270033
    masvidal
    Poziom 10  
    Posty: 8
    Zalozmy ze chce skompilowac taki kod w CodeBlocks (pod Windows)

    
    #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 ;)
  • REKLAMA
  • #5 6270104
    KowalD
    Poziom 17  
    Posty: 290
    Pomógł: 13
    Ocena: 3
    no jak wedlug mnie to do opcji linkowania musisz dodac biblioteke ws2_32.lib... ale w codeblocks to nie mam pojecia jak to zrobic
  • #6 6271260
    masvidal
    Poziom 10  
    Posty: 8
    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.

    
    :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.
REKLAMA