FPC message: Can not find unit/hu

From Lazarus wiki

Deutsch (de) English (en) français (fr) magyar (hu)


FPC üzenet: A unit nem található


A szakaszok címei szándékosan maradtak az eredeti angol nyelvű hibaüzenetek.

Általánosságban

Példa:

 unit1.pas(40,42) Fatal: Can't find unit forms

A fordító nem találja a kompatibilis forms.ppu fájlt és annak forrását sem (forms.pp vagy forms.pas vagy forms.p).

A fordító a unit útvonalakon keres. A unit útvonalak a következők:

  • Az fpc.cfg fájlban megadva (Linux, MAC OS X, BSD: /etc/fpc.cfg)
  • A Lazarus fordítási beállításai. Lásd: Project -> Compiler Options
    • -> Paths -> Other unit files
    • -> Inherited -> All inherited options -> unit path (if available)

Megjegyzés: Ilyen hibaüzenetet akkor is kaphatsz ha létezik a unit, mert az FPC ellenőrzi, hogy az adott unit érvényes-e (naprakész). A .ppu akkor tekinthető érvényesnek ha az összes fájl amire a unit épül érvényes. Ha egy másik FPC-t telepítesz akkor a rendszereden az összes unit érvénytelen lesz és újra kell fordítani őket. A lazarus-t érdemes terminál (parancssor) ablakban futtatni, hogy láthatóak legyenek az FPC hibaüzenetei.

Can't find unit interfaces

Az 'interfaces' unit az LCL része. Legalább egyszer használnod kell a programodban hogy beépítésre kerüljön az LCL felület (rendszerfüggő része. Például: gtk vagy win32). Ha ezt a hibaüzenetet kapod:

  • Ellenőrizd hogy a projekt használja-e az LCL csomagot. A menüből indulva: "Project -> Project Inspector -> Required Packages". Ha nincs ott az LCL akkor kattints az 'Add' gombra, majd a 'New Requirement'-re, válaszd az LCL-t és nyomj az 'Ok'-ra;
  • Ellenőrizd hogy a unit része a projektnek. Használd a "Project -> Add editor file to project" menüpontot;
  • Ellenőrizd hogy az 'interfaces.ppu' elérhető a unitok keresési útvonalán, és hogy az 'interfaces.pp' ne legyen a unitok keresési útvonalán. Valamint, hogy scak egy 'interfaces.ppu' van a a unitok keresési útvonalán. A unitok keresési útvonalát megnézheted ha jobb gombal kattintasz a forráskód-szerkesztőben és a megjelenő menüben kiválasztod a "Unit Info -> Unit Paths" menüpontot;
  • Ellenőrizd hogy a lefordított LCL illeszkedik-e a fordítóhoz. Például ha egy új fordítót telepítettél akkor az LCL újraépítése szükséges (pl.: az interfaces.ppu újraépítése is (ehhez egyes rendszereken rendszergazdaként kell bejelnetkezni) );
  • Ellenőrizd hogy a projektet a megfelelő (aktuális) widgetset használatával fordítod. A menüből indulva: "Project -> Project Options -> Compiler Options -> Path -> LCL Widget Type (various)". Állítsd alapértelmezettre ("default (*****)") az alapértelmezett widgetset használatához. Ha nem az alapértelmezettet akarod használni akkor állítsd át bármire, és fordítsd újra az LCL-t az illető widgetset-re (win32/win64, gtk, gtk2, etc).
  • Ellenőrizd hogy a megfelelő processzorra fordítasz. A menüből indulva: "Project -> Project Options -> Compiler Options -> Code -> Target CPU (-P)" és állítsd alapértelmezettre (Default) (vagy hagyd üresen).

Can't find unit LResources

Megoldható a "Tools/Build Lazarus" menüponttal.

Can't find unit System

Talán egy másik operációs rendszerre próbálod lefordítani a projektedet. A menüből indulva: "Project -> Compiler Options -> Code -> Target OS (-T)" és állítsd alapértelmezettre (Default) (vagy hagyd üresen).

Részletesebb leírás ezekkel kapcsolatban

Részletesebb leírást a unitok keresésével kapcsolatban itt találsz: Unit nem található - Hogyan találhatók meg a unit-ok