Link terminated



  • Seit neuestem bekomme ich beim Compilieren (besser gesagt: Linken) folgende Fehlermeldungen:

    [Linker Fehler] Fatal: Access violation.  Link terminated.
    [Linker Warnung] Unable to perform incremental link - performing full link...
    

    Als Hilfe dazu gibt der C++Builder folgendes an:

    Fehler #1:

    Bitte notieren Sie sich die Umstände, unter denen diese Meldung verursacht wurde, und informieren Sie den technischen Support von Borland.
    

    🙄

    Fehler #2:

    Der Linker hat in einer seiner Statusdateien (Projektname.IL*) einen Fehler gefunden. Daher wurde ein neuer Link-Vorgang gestartet und neue Statusdateien angelegt.
    

    Das Projekt wird aber trotz der Meldungen voll gelinkt und gestartet. Also was soll das Ganze dann?



  • Hast Du eventuell die include-Reihenfolge der Header 'vermasselt'? Irgendwas vor #include <vcl.h> included? Irgendwas vor dem pragma hdrstop included?



  • Die CPP sieht so aus:

    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    
    #include "UMainServer.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TfrmMain *frmMain;
    
    ...
    

    und die *.h

    //---------------------------------------------------------------------------
    #ifndef UMainServerH
    #define UMainServerH
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ComCtrls.hpp>
    #include <Dialogs.hpp>
    #include <ExtCtrls.hpp>
    #include <ExtDlgs.hpp>
    #include <NMSTRM.hpp>
    #include <Psock.hpp>
    #include <Math.hpp>
    #include "StreamData.h"
    #include <jpeg.hpp>
    #include <objbase.h>
    #include <registry.hpp>
    class TfrmMain : public TForm
    {
    __published:	// IDE-managed Components
            TNMStrm *NMStrm;
            TNMStrmServ *NMStrmServ;
            void __fastcall NMStrmServMSG(TComponent *Sender, const AnsiString sFrom, TStream *strm);
    private:	// User declarations
            AnsiString sServerName;
    public:		// User declarations
            __fastcall TfrmMain(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TfrmMain *frmMain;
    //---------------------------------------------------------------------------
    #endif
    

    Wo bei ich aber sagen muss, dass meine CPP und H - Dateien immer so gestaltet werden und es bis jetzt nie zu solchen Fehler gekommen ist. Der oben beschriebene Fehler tritt auch nur sporadisch auf.



  • Das sieht so auch ok aus. Hast Du mal alle 'unnötigen' Dateien gelöscht und das Projekt neu kompiliert?



  • Selbstverfreilich. Hat aber keinen Einfluß.



  • Sieh mal in den Borland Newsgroups nach, da gibt's massenhaft Diskussionen zum Thema.
    Ob auch eine Lösung bzw. Abhilfe dabei ist kann ich allerdings nicht sagen.



  • Häufig passiert das, wenn irgendwelche OBJ Dateien "korrupt" sind... Es empfiehlt sich OBJ und TDS zu löschen und ein "PRojekt neu erstellen" auszuführen (Alt + F9)

    -junix



  • Wie kann das passieren, dass OBJ-Dateien korrupt sind? Schließlich schreibt ja nur der BCB drin rum.



  • Vielleicht sind sie ja nicht wirklich korrupt aber haben eine Datenfolge die dem inkrementellen Linker ein Bein stellt? Softwarefehler nennt man sowas, egal wer drin rumschreibt (o;

    -junix


Anmelden zum Antworten