una gran problema.
ando queriendo usar una dll que hize en delphi 2010 con lazarus win32
el detalles asi.
tengo una unidad donde se declara la funcion.
llamada uInterface
y tiene esto
[pascal]
unit uInterface;
interface
function TimbrarTF(sXML:Ansistring; sRFCEmisor:Ansistring; sRFCReceptor:Ansistring; sCertPEMTF:AnsiString;
sURLTF:AnsiString; sCerSat:AnsiString; sKeySat:AnsiString;
sclaveSat:AnsiString):Integer; stdcall;
implementation
function TimbrarTF; external 'timbracfdi.dll' Name 'TimbrarTF'; stdcall;
end.
[/pascal]
y donde quiero usar la dll.
solo la incluyo
uInterface.pas en mi exe
y la llamo asi
[pascal]
procedure TForm1.BtnTimbrarClick(Sender: TObject);
begin
ShowMessage( IntToStr(
TimbrarTF(EditXMLaTimbrar.Text, EditRFCEmisor.Text, EditRFCReceptor.Text, EditCertPEMTF.Text,
EditURLTF.Text,EditCertSat.Text, EditCertKet.Text,
EditContraSAT.Text )
) ) ;
end;
[/pascal]
lazarus me da error
y solo asi la pude hacer compilar
sin usar el archivo uInterfaz.pas
solo la funcion directo en el
programa
[pascal]
unit unit1laz;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
BtnTimbrar: TButton;
EditCertKet: TEdit;
EditCertPEMTF: TEdit;
EditCertSat: TEdit;
EditContraSAT: TEdit;
EditRFCEmisor: TEdit;
EditRFCReceptor: TEdit;
EditURLTF: TEdit;
EditXMLaTimbrar: TEdit;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
procedure BtnTimbrarClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
function TimbrarTF(sXML:Ansistring; sRFCEmisor:Ansistring; sRFCReceptor:Ansistring; sCertPEMTF:AnsiString;
sURLTF:AnsiString; sCerSat:AnsiString; sKeySat:AnsiString;
sclaveSat:AnsiString):Integer; external 'timbracfdi.dll';
{ TForm1 }
procedure TForm1.BtnTimbrarClick(Sender: TObject);
begin
ShowMessage( IntToStr(
TimbrarTF(EditXMLaTimbrar.Text, EditRFCEmisor.Text, EditRFCReceptor.Text, EditCertPEMTF.Text,
EditURLTF.Text,EditCertSat.Text, EditCertKet.Text,
EditContraSAT.Text )
) ) ;
end;
initialization
{$I unit1laz.lrs}
end.
[/pascal]
¿compila pero da error. ¡?
¿que onda. como llamo una dll en lazarus.
grcias.?
load dll delphi 2010 con lazarus win32
Comenzado por
angelo2007
, oct 18 2011 12:43
7 respuestas en este tema
#1
Escrito 18 octubre 2011 - 12:43
#3
Escrito 19 octubre 2011 - 04:29
no le entiendo.
#4
Escrito 19 octubre 2011 - 05:38
delphi
function TimbrarTF(sXML:Ansistring; sRFCEmisor:Ansistring; sRFCReceptor:Ansistring; sCertPEMTF:AnsiString; sURLTF:AnsiString; sCerSat:AnsiString; sKeySat:AnsiString; sclaveSat:AnsiString):Integer; stdcall;
¿Definiste la función como stdcall? ¿Seguro?.
En ese caso prueba:
delphi
function TimbrarTF(sXML:Ansistring; sRFCEmisor:Ansistring; sRFCReceptor:Ansistring; sCertPEMTF:AnsiString; sURLTF:AnsiString; sCerSat:AnsiString; sKeySat:AnsiString; sclaveSat:AnsiString):Integer; stdcall; external 'timbracfdi.dll'
Saludos.
#5
Escrito 19 octubre 2011 - 08:57
escafandra
lo pruebo en unos dias por que mande al diablo mi windows seven . ya anda dando errores
y lo voy a reintalar lo pruebo y espero que con tu aportacion funcione. gracias
lo pruebo en unos dias por que mande al diablo mi windows seven . ya anda dando errores
y lo voy a reintalar lo pruebo y espero que con tu aportacion funcione. gracias
#7
Escrito 21 octubre 2011 - 12:16
Dos cosas para recordar al usar dll:
1.- Utiliza el mismo calling convention en la dll y en el programa que la utiliza
2.- No utilices tipos de datos cuya memoria gestione el heap manager, ya que tanto la dll como el programa tienen su propio heap manager y vas a tener problemas. En vez de AnsiString, utiliza pchar u otro.
Saludos.
1.- Utiliza el mismo calling convention en la dll y en el programa que la utiliza
2.- No utilices tipos de datos cuya memoria gestione el heap manager, ya que tanto la dll como el programa tienen su propio heap manager y vas a tener problemas. En vez de AnsiString, utiliza pchar u otro.
Saludos.
#8
Escrito 21 octubre 2011 - 08:38
Una vez tuve una inquietud parecida a la tuya y este es el tema en sí
http://www.delphiacc...-al-cargar-dll/
puede que te sirva.........
http://www.delphiacc...-al-cargar-dll/
puede que te sirva.........