winsock/MinGW linking



  • Hallo,
    Ich habe Probleme dabei, winsock mit MinGW zu nutzen. die richtige lib linke ich, und zwar auch NACH meinen objectdateien (hab schon gegoogelt, keine Angst). Ich krieg allerdings immer noch undefined references.

    hier die Meldungen des Compilers:

    mingw32-g++.exe -L..\bin\Debug  -o bin\Debug\TC_Test.exe obj\Debug\main.o    -lTheConnector -lws2_32 
    ..\bin\Debug/libTheConnector.a(TheConnector.o):D:/Projects/TheConnector/TheConnector.cpp:76: undefined reference to `_recvfrom@24'
    ..\bin\Debug/libTheConnector.a(TheConnector.o):D:/Projects/TheConnector/TheConnector.cpp:84: undefined reference to `_ntohs@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o):D:/Projects/TheConnector/TheConnector.cpp:53: undefined reference to `_htons@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o):D:/Projects/TheConnector/TheConnector.cpp:58: undefined reference to `_sendto@24'
    ..\bin\Debug/libTheConnector.a(TheConnector.o):D:/Projects/TheConnector/TheConnector.cpp:35: undefined reference to `_gethostbyname@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o):D:/Projects/TheConnector/TheConnector.cpp:40: undefined reference to `_inet_addr@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): In function `~TheConnector':
    D:/Projects/TheConnector/TheConnector.cpp:22: undefined reference to `_WSACleanup@0'
    D:/Projects/TheConnector/TheConnector.cpp:23: undefined reference to `_closesocket@4'
    D:/Projects/TheConnector/TheConnector.cpp:22: undefined reference to `_WSACleanup@0'
    D:/Projects/TheConnector/TheConnector.cpp:23: undefined reference to `_closesocket@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): In function `TheConnector':
    D:/Projects/TheConnector/TheConnector.cpp:8: undefined reference to `_WSAStartup@8'
    D:/Projects/TheConnector/TheConnector.cpp:11: undefined reference to `_socket@12'
    D:/Projects/TheConnector/TheConnector.cpp:8: undefined reference to `_WSAStartup@8'
    D:/Projects/TheConnector/TheConnector.cpp:11: undefined reference to `_socket@12'
    

    "TheConnector" ist ein sehr simpler UDP- sockets - wrapper. Mit demselben Code hab ich unter linux keine probleme (Hab mit #ifdef plattformweichen aufgestellt). Warum hab ich unter Windows linkerfehler? Ist mein gcc kaputt?



  • teste mal, die ws2_32 vorm connector zu linken.



  • mingw32-g++.exe -L..\bin\Debug  -o bin\Debug\TC_Test.exe obj\Debug\main.o    -lws2_32 -lTheConnector 
    obj\Debug\main.o: In function `main':
    D:/Projects/TheConnector/TC_Test/main.cpp:12: undefined reference to `_ntohl@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): D:/Projects/TheConnector/TheConnector.cpp:76: undefined reference to `_htons@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): D:/Projects/TheConnector/TheConnector.cpp:77: undefined reference to `_htonl@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): D:/Projects/TheConnector/TheConnector.cpp:78: undefined reference to `_bind@12'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): D:/Projects/TheConnector/TheConnector.cpp:81: undefined reference to `_recvfrom@24'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): D:/Projects/TheConnector/TheConnector.cpp:89: undefined reference to `_ntohs@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): D:/Projects/TheConnector/TheConnector.cpp:53: undefined reference to `_htons@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): D:/Projects/TheConnector/TheConnector.cpp:56: undefined reference to `_bind@12'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): D:/Projects/TheConnector/TheConnector.cpp:59: undefined reference to `_sendto@24'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): D:/Projects/TheConnector/TheConnector.cpp:35: undefined reference to `_gethostbyname@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): D:/Projects/TheConnector/TheConnector.cpp:40: undefined reference to `_inet_addr@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): In function `~TheConnector':
    D:/Projects/TheConnector/TheConnector.cpp:22: undefined reference to `_WSACleanup@0'
    D:/Projects/TheConnector/TheConnector.cpp:23: undefined reference to `_closesocket@4'
    D:/Projects/TheConnector/TheConnector.cpp:22: undefined reference to `_WSACleanup@0'
    D:/Projects/TheConnector/TheConnector.cpp:23: undefined reference to `_closesocket@4'
    ..\bin\Debug/libTheConnector.a(TheConnector.o): In function `TheConnector':
    D:/Projects/TheConnector/TheConnector.cpp:8: undefined reference to `_WSAStartup@8'
    D:/Projects/TheConnector/TheConnector.cpp:11: undefined reference to `_socket@12'
    D:/Projects/TheConnector/TheConnector.cpp:8: undefined reference to `_WSAStartup@8'
    D:/Projects/TheConnector/TheConnector.cpp:11: undefined reference to `_socket@12'
    collect2: ld returned 1 exit status
    

    nope, hab auch schon versucht 😞

    Hab auch versuch libwsock32.a zu linken, hab versucht, die lib inklusive Pfad anzugeben oderbeide libs zu linken. hab auch versucht, den Conector nicht extra zu kompilieren und den main code dadrin zu lagern - dasselbe...

    liegts an meiner gcc version? ich nutze 4.3.1

    mit msvc läuft alles bestens 😞



  • problem besteht immer noch "^^ *freundlich um hilfe bitt*



  • der 4.3.1 ist beta testing
    http://www.mingw.org/MinGWiki/index.php/GccStatus

    aber obs daran liegt, versuch den 4.3.0 mal zum vergleich.

    und hier noch patches... hmm
    http://david.osborn.name/misc/howto-build-gcc-mingw



  • hab meinen ganzen MinGW Ordner mal gelöscht und neu runtergeladen und eingerichtet. jetzt funktionierts.

    Danke, hätte wohl so immer noch versucht das mit dem 4.3.1er zu kompilieren


Anmelden zum Antworten