La Web del Programador: Comunidad de Programadores
 
    Pregunta:  12840 - PROBLEMAS AL COMPILAR UNA DLL EN LINUX CON PASCAL
Autor:  Gustavo Enriquez
No he podido compilar una libreria dinámica en pascal para linux. sale el siguiente error

Linking ejemplodll2
ejemplodll2.o: In function `program_init': ejemplodll2.o(.text+0xc): undefined reference to `hola' ejemplodll2.pas(12) Warning: Error while linking

este es el ejemplo.

El código de la libreria es :
//***************************************************************
Library ejemplodll;
uses
SysUtils;
Procedure hola; export;
Begin
Writeln('hola');
End;
exports
hola;
begin
end.
//***************************************************
El código del programa es :
//***************************************************
program ejemplodll2;
uses
SysUtils;
Procedure hola; external 'ejemplodll';
begin
Hola;
Readln;
end.

Gracias por su ayuda

  Respuesta:  jorge alvarenga
Antes que nada debes ver si el nombre del fuente de la libreria es igual al de la unidad, (o sea ejemplodll.pas) luego debes compilarla.
luego debes guardar el programa (no importa el nombre y lo compilas tambien).
Te digo esto porque ya me paso eso, que mi library se llamaba fechas y mi archivo fecha.pas .Me compilaba todo bien pero al llamarla desde un programa cliente no lo encuentra, pues el busca la libreria compilada por el nombre que das en uses
Ej.
program nada;
uses
x;
begin
end.

el buscará la libreria compilada x.ppu-x.o, etc segun tu compilador, o sea que debes guardar el fuente como x.pas y compilarlo.Tambien en el encabezado de x.pas debe decir
library x;

Espero te sirva