Freetype, Init_FreeType nicht gefunden obwohl Unit in Uses Klausel

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
thosch
Beiträge: 324
Registriert: Mo 10. Jul 2017, 20:32

Freetype, Init_FreeType nicht gefunden obwohl Unit in Uses Klausel

Beitrag von thosch »

Was isr denn da los?

Meine Uses KLausel sieht so aus:

Code: Alles auswählen

{$R-,S-,I-}

{$define TKSFont}
{$define TTrueTypeFont}
{$define new_style}
unit gFonts;

interface

[b]uses[/b]
{$ifdef TTrueTypeFont}
     FreeType, TTTypes, 
{$endif}
 // Objects,
{$ifdef new_style}
  classes, sysutils, fpcnvs; //wegen Canvas
  {$else}
  gDrivers; //wegen Canvas
{$endif}
Dennoch hält der Compiler hier an und behauptet, er fände den Bezeichner TT_Init_FreeType nicht.

Code: Alles auswählen

constructor TTrueTypeFont.Create(const FName: string);
begin
  inherited Create;
  if OpenTTF = 0 then TT_Init_FreeType;
  Inc(OpenTTF);
  if TT_Open_Face(FName, Face)<>0 then
    begin
      Status := TT_Err_Invalid_Face_Handle;
      Exit;
    end;
  TT_New_Glyph(Face, Glyph);
  TT_New_Instance(Face, Instance);
  TT_Set_Instance_Resolutions(Instance, 96,96);
  SetSize(8);
end;  

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Freetype, Init_FreeType nicht gefunden obwohl Unit in Uses Klausel

Beitrag von theo »

Ist in Unit LazFreeType.
Das kann man mit "Suche Bezeichner" selber herausfinden.

thosch
Beiträge: 324
Registriert: Mo 10. Jul 2017, 20:32

Re: Freetype, Init_FreeType nicht gefunden obwohl Unit in Uses Klausel

Beitrag von thosch »

Ok, aber wieso findet der Compiler den Bezeichner nicht, obwohl die Routine bei meiner Freetype Version zumindest immer noch in der Freetype Unit drin ist. Welches Lazarus Package haut mir da hier dazwischen? Klar kann ich auch die Lazfreetype Unit einbinden, hab ich jetzt auch gemacht, wie der Rat hier von Dir gegeben ist und nun compiliert der Compiler auch durch. Aber ich versteh dennoch nicht, warum ein Bezeichner, der definitiv in einer in meiner Uses Klausel aufgeführten Unit vom Compiler nicht gefunden wird.

Aber ich danke Dir erst mal für den Hinweis mit Lazfreetype.

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Freetype, Init_FreeType nicht gefunden obwohl Unit in Uses Klausel

Beitrag von PascalDragon »

thosch hat geschrieben:
Di 13. Apr 2021, 20:13
Dennoch hält der Compiler hier an und behauptet, er fände den Bezeichner TT_Init_FreeType nicht.
Die Unit FreeType des Compilers enthält eben kein TT_Init_FreeType und die Unit TTTypes ist nicht Teil der Compiler Distribution. Also musst du sowieso die LazFreeType Unit nutzen (die so heißt, damit es eben keine Konflikte mit der von FPC gibt).
FPC Compiler Entwickler

Antworten