Socket Klasse kompillieren



  • Hallo,

    ich habe heute versucht, eine Bibliothek für Sockets zu kompillieren, die unter Windows und Linux funktionieren soll. Leider funktioniert das kompillieren nicht richtig. Unter Linux funktioniert es, aber unter Windows klappt es nicht.
    Wenn ich das Projekt kompilliern will (egal ob mit Dev-C oder Visual Studio) funktioniert das erstellen der Bibliothek einwandfrei. Allerdings, sobald ich dann das Testprogramm kompillieren will, funktioniert es nicht. Es gibt eine Reihe von "undefined reference to xy". Schafft es von euch jemand, das Projekt zu kompillieren?

    Auf folgendes müsst ihr achten:
    1. Beim Testprogramm werden alle includes mit #include <xyz.h> eingebunden. Die müsst ihr aber mit #include "xyz.h" einbinden, weil ihr ja die Dateien nicht in eurem Include-Verzeichnis habt.
    2. OpenSSL-Unterstützung deaktivieren
    Microsoft Visual Studio:
    unter den Projekteinstellungen:
    C++> Preprocessor > Preprocessor Definitions:HAVE_OPENSSL löschen
    Project Properties>Librarian>General>Additional Dependencies: libeay32.lib ssleay32.lib
    Dev-C:
    Projekt-Optionen>Parameter
    -DHAVE_OPENSSL löschen
    und unter Linker libeay32.a ssleay32.a löschen
    3. Überprüfen ob ihr auch die richtige Bibliothek linkt, ist nämlich falsch eingestellt am Anfang.

    So und nun dir URL zur Bibliothek:
    http://www.alhem.net/Sockets/download.html

    Hoffe ihr könnt das Projekt erstellen, vielleicht hab ich nur irgendeine falsche Einstellung....
    Mfg S.W.



  • libws2_32.a



  • Nein, das hätte ich schon gemerkt. Die Fehler beziehen sich auf die Klassen der Bibliothek:

    Compiler: Default compiler
    Building Makefile: "C:\Dev-Cpp\Projects\Socket_Class_ZIP\DevCpp\Makefile.win"
    Führt  make clean aus
    rm -f bin/sockets_test.o  ../../bin/Test.exe
    
    g++.exe -c ../sockets_test.cpp -o bin/sockets_test.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I".."    
    
    g++.exe bin/sockets_test.o  -o "..\..\bin\Test.exe" -L"C:/Dev-Cpp/lib" -L"C:/OpenSSL/lib/MinGW" Sockets.a ../../../lib/libws2_32.a  
    
    bin/sockets_test.o(.rdata$_ZTV7hSocket[vtable for hSocket]+0x9c):sockets_test.cpp: undefined reference to `HttpClientSocket::OnFirst()'
    bin/sockets_test.o(.rdata$_ZTV7hSocket[vtable for hSocket]+0xa0):sockets_test.cpp: undefined reference to `HttpClientSocket::OnHeader(std::string const&, std::string const&)'
    bin/sockets_test.o(.rdata$_ZTV7hSocket[vtable for hSocket]+0xa4):sockets_test.cpp: undefined reference to `HttpClientSocket::OnHeaderComplete()'
    bin/sockets_test.o(.rdata$_ZTV7hSocket[vtable for hSocket]+0xa8):sockets_test.cpp: undefined reference to `HttpClientSocket::OnData(char const*, unsigned int)'
    bin/sockets_test.o(.rdata$_ZTV7hSocket[vtable for hSocket]+0xb4):sockets_test.cpp: undefined reference to `HttpClientSocket::OnContent()'
    Sockets.a(HttpGetSocket.o)(.text+0x14):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::HttpClientSocket(SocketHandler&)'
    Sockets.a(HttpGetSocket.o)(.text+0x38):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::HttpClientSocket(SocketHandler&)'
    Sockets.a(HttpGetSocket.o)(.text+0xa2):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::HttpClientSocket(SocketHandler&, std::string const&)'
    Sockets.a(HttpGetSocket.o)(.text+0xd6):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::SetFilename(std::string const&)'
    Sockets.a(HttpGetSocket.o)(.text+0xeb):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlPort()'
    Sockets.a(HttpGetSocket.o)(.text+0xff):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlHost()'
    Sockets.a(HttpGetSocket.o)(.text+0x35b):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0x3f6):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::HttpClientSocket(SocketHandler&, std::string const&)'
    
    Sockets.a(HttpGetSocket.o)(.text+0x42a):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::SetFilename(std::string const&)'
    Sockets.a(HttpGetSocket.o)(.text+0x43f):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlPort()'
    Sockets.a(HttpGetSocket.o)(.text+0x453):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlHost()'
    Sockets.a(HttpGetSocket.o)(.text+0x6af):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0x74d):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::HttpClientSocket(SocketHandler&)'
    Sockets.a(HttpGetSocket.o)(.text+0x793):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::SetFilename(std::string const&)'
    Sockets.a(HttpGetSocket.o)(.text+0x9fa):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0xa99):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::HttpClientSocket(SocketHandler&)'
    Sockets.a(HttpGetSocket.o)(.text+0xadf):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::SetFilename(std::string const&)'
    Sockets.a(HttpGetSocket.o)(.text+0xd46):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0xd9e):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0xdd2):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0xe06):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0x1421):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlPort()'
    Sockets.a(HttpGetSocket.o)(.text+0x1436):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlPort()'
    Sockets.a(HttpGetSocket.o)(.text+0x145d):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlPort()'
    Sockets.a(HttpGetSocket.o)(.text+0x149c):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlHost()'
    Sockets.a(HttpGetSocket.o)(.text+0x16bd):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlHost()'
    Sockets.a(HttpGetSocket.o)(.rdata$_ZTV13HttpGetSocket[vtable for HttpGetSocket]+0x9c):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::OnFirst()'
    Sockets.a(HttpGetSocket.o)(.rdata$_ZTV13HttpGetSocket[vtable for HttpGetSocket]+0xa0):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::OnHeader(std::string const&, std::string const&)'
    
    Sockets.a(HttpGetSocket.o)(.rdata$_ZTV13HttpGetSocket[vtable for HttpGetSocket]+0xa4):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::OnHeaderComplete()'
    Sockets.a(HttpGetSocket.o)(.rdata$_ZTV13HttpGetSocket[vtable for HttpGetSocket]+0xa8):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::OnData(char const*, unsigned int)'
    Sockets.a(HttpGetSocket.o)(.rdata$_ZTV13HttpGetSocket[vtable for HttpGetSocket]+0xb4):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::OnContent()'
    collect2: ld returned 1 exit status
    
    make.exe: *** [../../bin/Test.exe] Error 1
    
    Ausführung beendet
    


  • There's a file missing from the Project file for DevCpp, and that file is HttpClientSocket.cpp.
    If you add that to the project it will all work out.

    XCooperation schrieb:

    Nein, das hätte ich schon gemerkt. Die Fehler beziehen sich auf die Klassen der Bibliothek:

    Compiler: Default compiler
    Building Makefile: "C:\Dev-Cpp\Projects\Socket_Class_ZIP\DevCpp\Makefile.win"
    Führt  make clean aus
    rm -f bin/sockets_test.o  ../../bin/Test.exe
    
    g++.exe -c ../sockets_test.cpp -o bin/sockets_test.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I".."    
    
    g++.exe bin/sockets_test.o  -o "..\..\bin\Test.exe" -L"C:/Dev-Cpp/lib" -L"C:/OpenSSL/lib/MinGW" Sockets.a ../../../lib/libws2_32.a  
    
    bin/sockets_test.o(.rdata$_ZTV7hSocket[vtable for hSocket]+0x9c):sockets_test.cpp: undefined reference to `HttpClientSocket::OnFirst()'
    bin/sockets_test.o(.rdata$_ZTV7hSocket[vtable for hSocket]+0xa0):sockets_test.cpp: undefined reference to `HttpClientSocket::OnHeader(std::string const&, std::string const&)'
    bin/sockets_test.o(.rdata$_ZTV7hSocket[vtable for hSocket]+0xa4):sockets_test.cpp: undefined reference to `HttpClientSocket::OnHeaderComplete()'
    bin/sockets_test.o(.rdata$_ZTV7hSocket[vtable for hSocket]+0xa8):sockets_test.cpp: undefined reference to `HttpClientSocket::OnData(char const*, unsigned int)'
    bin/sockets_test.o(.rdata$_ZTV7hSocket[vtable for hSocket]+0xb4):sockets_test.cpp: undefined reference to `HttpClientSocket::OnContent()'
    Sockets.a(HttpGetSocket.o)(.text+0x14):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::HttpClientSocket(SocketHandler&)'
    Sockets.a(HttpGetSocket.o)(.text+0x38):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::HttpClientSocket(SocketHandler&)'
    Sockets.a(HttpGetSocket.o)(.text+0xa2):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::HttpClientSocket(SocketHandler&, std::string const&)'
    Sockets.a(HttpGetSocket.o)(.text+0xd6):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::SetFilename(std::string const&)'
    Sockets.a(HttpGetSocket.o)(.text+0xeb):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlPort()'
    Sockets.a(HttpGetSocket.o)(.text+0xff):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlHost()'
    Sockets.a(HttpGetSocket.o)(.text+0x35b):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0x3f6):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::HttpClientSocket(SocketHandler&, std::string const&)'
    
    Sockets.a(HttpGetSocket.o)(.text+0x42a):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::SetFilename(std::string const&)'
    Sockets.a(HttpGetSocket.o)(.text+0x43f):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlPort()'
    Sockets.a(HttpGetSocket.o)(.text+0x453):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlHost()'
    Sockets.a(HttpGetSocket.o)(.text+0x6af):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0x74d):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::HttpClientSocket(SocketHandler&)'
    Sockets.a(HttpGetSocket.o)(.text+0x793):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::SetFilename(std::string const&)'
    Sockets.a(HttpGetSocket.o)(.text+0x9fa):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0xa99):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::HttpClientSocket(SocketHandler&)'
    Sockets.a(HttpGetSocket.o)(.text+0xadf):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::SetFilename(std::string const&)'
    Sockets.a(HttpGetSocket.o)(.text+0xd46):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0xd9e):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0xdd2):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0xe06):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::~HttpClientSocket()'
    Sockets.a(HttpGetSocket.o)(.text+0x1421):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlPort()'
    Sockets.a(HttpGetSocket.o)(.text+0x1436):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlPort()'
    Sockets.a(HttpGetSocket.o)(.text+0x145d):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlPort()'
    Sockets.a(HttpGetSocket.o)(.text+0x149c):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlHost()'
    Sockets.a(HttpGetSocket.o)(.text+0x16bd):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::GetUrlHost()'
    Sockets.a(HttpGetSocket.o)(.rdata$_ZTV13HttpGetSocket[vtable for HttpGetSocket]+0x9c):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::OnFirst()'
    Sockets.a(HttpGetSocket.o)(.rdata$_ZTV13HttpGetSocket[vtable for HttpGetSocket]+0xa0):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::OnHeader(std::string const&, std::string const&)'
    
    Sockets.a(HttpGetSocket.o)(.rdata$_ZTV13HttpGetSocket[vtable for HttpGetSocket]+0xa4):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::OnHeaderComplete()'
    Sockets.a(HttpGetSocket.o)(.rdata$_ZTV13HttpGetSocket[vtable for HttpGetSocket]+0xa8):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::OnData(char const*, unsigned int)'
    Sockets.a(HttpGetSocket.o)(.rdata$_ZTV13HttpGetSocket[vtable for HttpGetSocket]+0xb4):HttpGetSocket.cpp: undefined reference to `HttpClientSocket::OnContent()'
    collect2: ld returned 1 exit status
    
    make.exe: *** [../../bin/Test.exe] Error 1
    
    Ausführung beendet
    

Anmelden zum Antworten