zeoslib installation iunknown.queryinterface(....

Rund um die LCL und andere Komponenten
Antworten
arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

zeoslib installation iunknown.queryinterface(....

Beitrag von arturx »

Ich versuche augenblicklich, mein Lazarus upzudaten : Version 0.29. läuft auch prächtig (auf Win 2000)
Die zeoslib Installation bricht jedoch ab mit der Fehlermeldung :

Code: Alles auswählen

C:\Programme\lazarus\components\zeoslib\src\core\ZClasses.pas(84,22) Error: No matching implementation for interface method "IUnknown.QueryInterface(constref TGuid,out <Formal type>):LongInt; StdCall;" found
Hat einer von Euch eine Idee, wie dieses Problem behebbar ist oder wo ich nachschauen kann ?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: zeoslib installation iunknown.queryinterface(....

Beitrag von mse »


arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

Re: zeoslib installation iunknown.queryinterface(....

Beitrag von arturx »

Vielen Dank, Super, das ist es !!!!!!

Für den Fall, dass noch irgendjemand dieses Problem haben sollte,
folgt nun die 1:1 Umsetzung des Tips :

in unit zclasses müssen 2 Zeilen überschrieben werden :

Code: Alles auswählen

TContainedObject = class(TAggregatedObject, IInterface)
  protected
    function QueryInterface(constref IID: TGUID; out Obj): HResult; virtual; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};//<-- New
// old:    function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall;
  end;

Code: Alles auswählen

function TContainedObject.QueryInterface(constref IID: TGUID; out Obj): HResult;//<--- New
// Old.: function TContainedObject.QueryInterface(const IID: TGUID; out Obj): HResult;
begin
  if GetInterface(IID, Obj) then
    Result := S_OK
if Value <> nil then
  begin
    Result := (IZInterface(Self) = Value)
      or ((Self as IZInterface) = (Value as IZInterface));
  end else
   Result := False;
end;
Auch wenn es für die meisten sofort offensichtlich ist :
Vielleicht hilft es ja irgendjemandem, der den Tip nicht auf Anhieb umsetzen kann....

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: zeoslib installation iunknown.queryinterface(....

Beitrag von knight »

Bei mir läuft Zeos ohne jede Anpassung. Vielleicht liegt es auch daran, daß ich mit Linux arbeite.

knight

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: zeoslib installation iunknown.queryinterface(....

Beitrag von marcov »

knight hat geschrieben:Bei mir läuft Zeos ohne jede Anpassung. Vielleicht liegt es auch daran, daß ich mit Linux arbeite.
Oder eine fpc 2.4.x gebasierter Lazarus. Nur 2.5.x hat diese Änderung.

Antworten