PDA

Ver la Versión Completa : Error al compilar


AnuardMichelen
31-01-2013, 22:01:27
Hola a todos espero que esten bien.

Estoy compilando un sistema pero me aparece los siguientes errores:

[ERROR]Zlib.pas(593):Unsatisfied forward or external declaration: '@zcalloc'
[ERROR]Zlib.pas(593):Unsatisfied forward or external declaration: '@zcfree'
[ERROR]uReporteHorarios.pas(7):Could not compile used unit '@Zlib.pas'

Ya no se que hacer. Gracias como siempre por su pronta ayuda.

Al González
31-01-2013, 22:16:20
Faltaría mostrar las líneas de código en las que te marca ese error. :)

¿Es Delphi? ¿Qué versión?

Básicamente es que algunas rutinas están declaradas, pero el compilador no encuentra su implementación.

AnuardMichelen
31-01-2013, 22:42:44
Que debo mostrar para exponer mejor el problema. Aun no he podido resolver.

Gracias.

Casimiro Notevi
31-01-2013, 22:50:15
Que debo mostrar para exponer mejor el problema.

Exactamente, que debes mostrar mejor el problema :)

nlsgarcia
01-02-2013, 11:35:38
AnuardMichelen,


Estoy compilando un sistema pero me aparece los siguientes errores: ...Unsatisfied forward or external declaration...

En Delphi el error anterior se refiere a funciones o procedimientos declarados en la sección de interface pero que no han sido definidos en la sección de implementation.

Revisa este código:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;

function F1(x1 : Integer) : Integer;
Procedure P1(x1 : Integer);

var
Form1: TForm1;

implementation

{$R *.dfm}

end.

El código anterior al ser compilado producirá los siguientes errores:


[Error] Unit1.pas(17): Unsatisfied forward or external declaration: 'F1'

[Error] Unit1.pas(18): Unsatisfied forward or external declaration: 'P1'

[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

La razón es que la función F1 y el procedure P1 no han sido definidos en la sección de implementation.

El error anterior también ocurrirá si las rutinas están definidas externamente en un DLL el cual no ha sido declarado en la sección de interface,

Revisa este código:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;

function F1(x1 : Integer) : Integer; stdcall; external 'Lib1.dll'
Procedure P1(x1 : Integer); stdcall; external 'Lib1.dll'

var
Form1: TForm1;

implementation

{$R *.dfm}

end.


El código anterior compila sin errores dado que la función F1 y el procedure P1 están definidos externamente en el DLL Lib1.dll

En resumen: Es un problema de definición del código a ejecutar en una función o procedure, sin embargo como bien señalan Al González y Casimiro sería conveniente que publiques tu código para un mayor análisis del problema.

Espero sea útil :)

Nelson.