Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2010-11

Error al compilar Zeos Component

6 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

José Antonio Cuello

Hola, actualic� el Lazarus por svn y ahora al compilar los Zeos me da el siguiente error:

ZClasses.pas(84,22) Error: No matching implementation for interface method "IUnknown.QueryInterface(constref TGuid,out <Formal type>):LongInt; CDecl;" found

en el c�digo de la unit ZClasses.pas:

  TContainedObject = class(TAggregatedObject, IInterface)
  protected
    function QueryInterface(const IID: TGUID; out Obj): HResult;
virtual; stdcall;
  end;

La versi�n de Zeos que uso es la 6.6.6 porque intent� usar la 7.0 y me daba problemas con los datasets. � Saben algo sobre lo que est� pasando ?, es que por el mensaje de error no entiendo muy bien donde buscar.
Gracias y un saludo.

________________________________________________________________________

ARTEX TRADING S.A.
Jos� Antonio Cuello Principal

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20101119/d0ad2d5a/attachment-0001.html>

Reply by email

José Mejuto
to José Antonio Cuello

Hello Jos�,

Friday, November 19, 2010, 9:50:14 AM, you wrote:

JAC> Hola, actualic� el Lazarus por svn y ahora al compilar los Zeos me da el JAC> siguiente error:
JAC> ZClasses.pas(84,22) Error: No matching implementation for interface JAC> method "IUnknown.QueryInterface(constref TGuid,out <Formal type>>):LongInt; CDecl;" found
JAC> en el c�digo de la unit ZClasses.pas:
JAC> TContainedObject = class(TAggregatedObject, IInterface) JAC> protected
JAC> function QueryInterface(const IID: TGUID; out Obj): HResult; JAC> virtual; stdcall;
JAC> end;
JAC> La versi�n de Zeos que uso es la 6.6.6 porque intent� usar la 7.0 y me JAC> daba problemas con los datasets. � Saben algo sobre lo que est� JAC> pasando ?, es que por el mensaje de error no entiendo muy bien donde JAC> buscar.

Se ha hecho un cambio en el compilador para que FPC sea compatible XPCOM, o sea, COM para sistemas no Windows, y creo que ah� hay un error en la versi�n windows. La historia es que ahora los "const" para COM deben de ser "constref" lo que asegura el buen funcionamiento con XPCOM y Windows.

Mientras averiguo si el problema es un bug o tiene que ser as� por alg�n motivo puedes compilar el zeos cambiando esta linea de queryinterface:

function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall;

por esta otra:

function QueryInterface(constref IID: TGUID; out Obj): HResult; virtual; stdcall;
Best regards, Jos�

Reply by email

José Antonio Cuello
to José Mejuto

Hola, he probado lo que me indicabas pero sigue dando el mismo error. Te pongo toda la lista de errores por si te puede dar alguna pista. Muchas gracias por tu sugerencia.
Un saludo.

zeoslib/src/core/ZClasses.pas(84,22) Error: No matching implementation for interface method "IUnknown.QueryInterface(constref TGuid,out <Formal type>):LongInt; CDecl;" found
zeoslib/src/core/ZClasses.pas(84,22) Error: No matching implementation for interface method "IUnknown._AddRef:LongInt; CDecl;" found zeoslib/src/core/ZClasses.pas(84,22) Error: No matching implementation for interface method "IUnknown._Release:LongInt; CDecl;" found zeoslib/src/core/ZClasses.pas(183,14) Warning: An inherited method is hidden by "TZAbstractObject.Equals(const IUnknown):Boolean;" zeoslib/src/core/ZClasses.pas(186,14) Warning: An inherited method is hidden by "TZAbstractObject.ToString:AnsiString;"
zeoslib/src/core/ZClasses.pas(190,1) Fatal: There were 3 errors compiling module, stopping

________________________________________________________________________

ARTEX TRADING S.A.
Jos� Antonio Cuello Principal

El vie, 19-11-2010 a las 12:26 +0100, Jos� Mejuto escribi�:

Show quoted text 21 lines
Se ha hecho un cambio en el compilador para que FPC sea compatible XPCOM, o sea, COM para sistemas no Windows, y creo que ah� hay un error en la versi�n windows. La historia es que ahora los "const" para COM deben de ser "constref" lo que asegura el buen funcionamiento con XPCOM y Windows. Mientras averiguo si el problema es un bug o tiene que ser as� por alg�n motivo puedes compilar el zeos cambiando esta linea de queryinterface: function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall; por esta otra: function QueryInterface(constref IID: TGUID; out Obj): HResult; virtual; stdcall; -- Best regards, Jos�

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20101120/ae285677/attachment.html>

Reply by email

José Mejuto
to José Antonio Cuello

Hello Jos�,

Saturday, November 20, 2010, 1:32:34 AM, you wrote:

JAC> Hola, he probado lo que me indicabas pero sigue dando el mismo error. Te JAC> pongo toda la lista de errores por si te puede dar alguna pista. JAC> Muchas gracias por tu sugerencia.
JAC> Un saludo.

JAC> zeoslib/src/core/ZClasses.pas(84,22) Error: No matching implementation JAC> for interface method "IUnknown.QueryInterface(constref TGuid,out <Formal type>>):LongInt; CDecl;" found
JAC> zeoslib/src/core/ZClasses.pas(84,22) Error: No matching implementation JAC> for interface method "IUnknown._AddRef:LongInt; CDecl;" found JAC> zeoslib/src/core/ZClasses.pas(84,22) Error: No matching implementation JAC> for interface method "IUnknown._Release:LongInt; CDecl;" found JAC> zeoslib/src/core/ZClasses.pas(183,14) Warning: An inherited method is JAC> hidden by "TZAbstractObject.Equals(const IUnknown):Boolean;" JAC> zeoslib/src/core/ZClasses.pas(186,14) Warning: An inherited method is JAC> hidden by "TZAbstractObject.ToString:AnsiString;" JAC> zeoslib/src/core/ZClasses.pas(190,1) Fatal: There were 3 errors JAC> compiling module, stopping

Veo que lo est�s compilando en Linux, as� que has de cambiar tambi�n los stdcall del IUnknown a CDecl ya que ahora en Linux no usan stdcall (de hecho tampoco lo usaba antes, simplemente "pasaba por encima").

Vamos que deber�a quedarte algo as�:

{$IFDEF FPC}
PDateTime = ^TDateTime;
TAggregatedObject = class(TObject)
private
  FController: Pointer;
  function GetController: IInterface;
protected
  function QueryInterface(constref IID: TGUID; out Obj): HResult; cdecl;
  function _AddRef: Integer; cdecl;
  function _Release: Integer; cdecl;
public
  constructor Create(const Controller: IInterface);
  property Controller: IInterface read GetController;
end;
TContainedObject = class(TAggregatedObject, IInterface)
protected
  function QueryInterface(constref IID: TGUID; out Obj): HResult; virtual; cdecl;
end;
{$ENDIF}

O puedes recrear los ifdefs de freepascal para que se auto-adapte a la plataforma:

IUnknown = interface
  ['{00000000-0000-0000-C000-000000000046}']
  function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} iid : tguid;out obj) : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
  function _AddRef : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
  function _Release : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
end;

A este define {$IFDEF FPC_HAS_CONSTREF} no se si tendr�s acceso en tu unit (la de zeos vamos) :-?

Best regards, Jos�

Reply by email

José Antonio Cuello
to José Mejuto

Hola, muchas gracias por tu soluci�n (no he podido probarla hasta ahora). Va genial ... :)
Una cosa como va el tema de avisar para que en futuras versiones de los Zeos (p.e. la versi�n 7 que est� en Beta) corrijan este detalle. Hay que estar en la lista inglesa?.

Gracias de nuevo, un saludo.

________________________________________________________________________

ARTEX TRADING S.A.
Jos� Antonio Cuello Principal

El s�b, 20-11-2010 a las 02:11 +0100, Jos� Mejuto escribi�:

Show quoted text 46 lines
Veo que lo est�s compilando en Linux, as� que has de cambiar tambi�n los stdcall del IUnknown a CDecl ya que ahora en Linux no usan stdcall (de hecho tampoco lo usaba antes, simplemente "pasaba por encima"). Vamos que deber�a quedarte algo as�: {$IFDEF FPC} PDateTime = ^TDateTime; TAggregatedObject = class(TObject) private FController: Pointer; function GetController: IInterface; protected function QueryInterface(constref IID: TGUID; out Obj): HResult; cdecl; function _AddRef: Integer; cdecl; function _Release: Integer; cdecl; public constructor Create(const Controller: IInterface); property Controller: IInterface read GetController; end; TContainedObject = class(TAggregatedObject, IInterface) protected function QueryInterface(constref IID: TGUID; out Obj): HResult; virtual; cdecl; end; {$ENDIF} O puedes recrear los ifdefs de freepascal para que se auto-adapte a la plataforma: IUnknown = interface ['{00000000-0000-0000-C000-000000000046}'] function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} iid : tguid;out obj) : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; function _AddRef : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; function _Release : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; end; A este define {$IFDEF FPC_HAS_CONSTREF} no se si tendr�s acceso en tu unit (la de zeos vamos) :-?

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20101125/6c3b5fda/attachment-0001.html>

Reply by email

José Mejuto
to José Antonio Cuello

Hello Jos�,

Thursday, November 25, 2010, 11:28:24 AM, you wrote:

JAC> Hola, muchas gracias por tu soluci�n (no he podido probarla hasta JAC> ahora). Va genial ... :)
JAC> Una cosa como va el tema de avisar para que en futuras versiones de los JAC> Zeos (p.e. la versi�n 7 que est� en Beta) corrijan este detalle. Hay que JAC> estar en la lista inglesa?.

En Zeos 7 ya est� corregido.

Best regards, Jos�

Reply by email