c++Builder als Windows 64bit: [ilink64 Fehler] Fatal: Invalid object file: WS2_32.LIB



  • Moin,
    in einem c++Builder - Windows 64bit - Projekt werden die Indy-Komponenten verwendet und winsock2 eingebunden:

    #include <winsock2.h>
    
    #include <IdBaseComponent.hpp>
    #include <IdComponent.hpp>
    #include <IdTCPClient.hpp>
    #include <IdTCPConnection.hpp>
    #include <IdThreadComponent.hpp>
    
    #include <windows.h>
    #include <vcl.h>
    

    Der Linker möchte gerne die WS2_32.LIB verwenden:

    [ilink64 Fehler] Fatal: Invalid object file 'C:\PROGRAM FILES (X86)\EMBARCADERO\STUDIO\21.0\LIB\WIN32C\DEBUG\WS2_32.LIB'
    

    oder

    [ilink64 Fehler] Fatal: Unable to open file 'WS2_32.LIB'
    

    Die ws2_32.a ignoriert er:

    C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\win64\release\psdk\ws2_32.a
    

    In den Projekt-Optionen (Bibliothekspfad) ist eingetragen:

    C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\win64\release
    C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\win64\release\psdk
    C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\win64\debug
    

    Sobald ich in die Projekt-Optionen (Bibliothekspfad) eingetrage:

    C:\PROGRAM FILES (X86)\EMBARCADERO\STUDIO\21.0\LIB\WIN32C\DEBUG
    

    meldet der Linker:

    [ilink64 Fehler] Fatal: Invalid object file 'C:\PROGRAM FILES (X86)\EMBARCADERO\STUDIO\21.0\LIB\WIN32\RELEASE\RTL.BPI'
    

    Wie binde ich ws2_32 in 64bit-Programme ein?

    Vielen Dank für die Hilfe!



  • Probier das mal in der main-cpp:

    #pragma link "ws2_32.a"
    


  • Hallo DocShoe,
    danke für den Tipp:

    Der Linker krallt sich immer noch an der WS2_32.LIB' fest.
    Wer steckt denn dahinter?

    [ilink64 Fehler] Fatal: Unable to open file 'WS2_32.LIB'
    
    #include <vcl.h>
    #pragma hdrstop
    #include <tchar.h>
    #include "windows.h"
    #include <Vcl.Styles.hpp>
    #include <Vcl.Themes.hpp>
    #pragma link "ws2_32.a"
    

    In den Projekt-Optionen (Bibliothekspfad) ist eingetragen:

    C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\win64\release
    C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\win64\release\psdk
    C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\win64\debug
    


  • @thomaskroger

    Du könntest deine Projektdatei (.cbproj) mal durchsuchen, ob da die lib explizit eingetragen ist. Falls ja, entfern´ sie mal und guck, ob der Linker dann zufrieden ist. Mach vorher aber unbedingt ´ne Kopie.



  • Ha! Gute Idee :o)

    Die cbpro ist frei von ws2_32.lib, aber in den Tiefen des Projektes gibt es eine Nur-Header-Datei (modbus.h) mit:

    #pragma comment(lib, "Ws2_32.lib")
    

    Geändert in:

    #if defined(_WIN64)
    #pragma link "ws2_32.a"
    #else
    #pragma link "ws2_32.lib"
    #endif
    

    und läuft.
    Vielen Dank !!


Anmelden zum Antworten