Datei: 'WINDOWS.OBJ' kann nicht geöffnet werden (XE2, Update 3)



  • Hallo,

    nach dem Update von C++ Builder 2006 auf XE2 und Anpassung meiner Projekte, bekomme ich bei einem Projekt den o.g. Linkerfehler. Die anderen Projekte funktionieren.
    Die Projektdatei habe ich manuell nach "windows" durchsucht, es gibt keinen entprechenden Eintrag. Außerdem habe ich sämtliche "#pragma link" kontrolliert, auch hier gibt es nirgends ein #pragma link "windows".

    Im Internet fand ich einige Hinweis, dass es mit der Einbindung von Delphi/Pascal-Dateien zusammenhängen könnte (uses / Windows, WinTypes, WinApi...), aber keine wirkliche Lösung für dieses Problem.

    Ich verwende die Komponenten von Nexus, TMS, Eldos, QuickReport und Jedi.
    Ansonsten sind ausschließlich selbstprogrammierte C++-Dateien eingebunden.

    Hatte jemand das gleiche Problem oder einen Tipp, wie ich die Ursache finden kann.

    Bin für jeden Hinweis dankbar!
    Josef



  • Hatte ich auch, das konnte ich dadurch lösen, dass ich das Projekt komplett neu aufgebaut habe.



  • DocShoe schrieb:

    Hatte ich auch, das konnte ich dadurch lösen, dass ich das Projekt komplett neu aufgebaut habe.

    Das Projekt habe ich bereits neu aufgesetzt, der Fehler ist aber immer noch da.



  • nachdem ich mir sicher war, dass meine Sourcedateien in Ordnung sind, habe ich bei den eingebundenen Komponenten (AsyncPro, Jedi, QuickReport etc.) bei sämtlichen vorhandenen Sourcedateien (.pas) den uses-Abschnitt geprüft. Dort muss bei Win32 "Windows" stehen anstelle von "WinProcs, WinTypes".
    Wenn im uses-Abschnitt bei einer WIN32-Compilation WinProcs oder WinTypes steht, verlangt der Linker nach der windows.obj!

    Bei QuickReport habe ich dann in der Datei qrpexpr.pas den Fehler gefunden.

    Original:
    uses
    WinProcs, WinTypes,
    Dialogs, DBTables, QRCtrls, CSProp,
    Forms, Classes, SysUtils, QRExpBld, QRPrntr,QuickRpt,
    {IFDEF WIN32} Registry, Windows, {else}
    Winprocs, Wintypes,
    {$ENDIF}

    Richtig ist:
    uses
    Dialogs,DBTables, QRCtrls, CSProp,
    Forms, Classes, SysUtils, QRExpBld, QRPrntr, QuickRpt,
    {IFDEF WIN32} Registry, Windows, {else}
    Winprocs, Wintypes,
    {$ENDIF}

    Die Entwickler haben für den Compiler zwar richtigerweise $IFDEF WIN32 eingefügt, haben aber vergessen, "WinProcs, WinTypes" in der ersten Zeile zu entfernen.

    Lösung des Problems:
    1. RAD-Studio starten (nicht C++ Builder)
    2. qrpexpr.pas ändern
    3. die QR-Komponenten deinstallieren (Menü: Komponente => Packages installieren => QuickReport... => Entfernen)
    4. Projekt öffnen: QR5RunDXE2.dproj
    5. In der Projektverwaltung Rechtsklick auf QR5RunDXE2 und dann "Erzeugen"
    6. Projekt öffnen: QR5DesignDXE2.dproj
    7. In der Projektverwaltung Rechtsklick auf QR5DesignDXE2 und dann "Installieren"

    Anmerkung: Das C++-Package von QR konnte ich zwar installieren, hat aber die bestehenden Reporte "verbogen" und reihenweise Fehler verursacht, deshalb habe ich das Delphi-Package verwendet und mit dem RAD-Studio compliliert und installiert.


Anmelden zum Antworten