Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   dll de Visual Basic en Delphi (https://www.clubdelphi.com/foros/showthread.php?t=36507)

elpinjum 14-10-2006 15:36:50

dll de Visual Basic en Delphi
 
Estoy intentado usar una dll generada desde Visual Basic para usarla en Delphi, y no hay manera.

En la dll que genero en Visual Basic lo único que tengo es lo siguiente:
Public sub Hola()
MsgBox("Hola")
End Sub

Una vez generada la dll, la intento utilizar desde un programa generado con visual Basic, y consigo hacerlo sin problemas.

Cuando intento importarla desde delphi, no consigo que me funcione.

Lo hago con el siguiente codigo

Código Delphi [-]
unit Unit9;

interface

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

type
  TForm9 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TProc = procedure;

var
  Form9: TForm9;

implementation

{$R *.dfm}

procedure TForm9.Button1Click(Sender: TObject);
var
  Handle: THandle;
  Proc:TProc;
begin
  Handle := LoadLibrary('Project10.dll');
  if Handle <> 0 then
  begin
    @Proc := GetProcAddress(Handle, 'Hola');
    if @Proc <> nil then
      Proc;
    FreeLibrary(Handle);
  end;
end;

end.

Delphi consigue cargar la libreria, pero cuando intento cargar el procedimiento por el nombre delphi no lo encuentra, por lo que no me queda mas remedio que cargarlo por el numero de indice con el siguiente código @Proc := GetProcAddress(Handle, PChar(1));.

Una vez que he conseguido cargar el procedimiento, lo ejecuto, pero no hace absolutamente nada, ¿alquien puede ayudarme?

¿Acaso no es compatible una dll de visual basic con delphi?.

avmm2004 15-10-2006 11:45:32

No se si has tenido en cuenta, a la hora de declarar la funcion en delphi, la utilizacion de la directiva stdcall ¿?. :confused:

ppb 15-10-2006 11:53:05

Haz una busqueda , hay muchos hilos que hablan de esto.

elpinjum 16-10-2006 08:56:18

En todas las pruebas que he hecho he probado con las convenciones de llamadas stdcall y cdecl, pero el problema sigue sin resolverse, de todos modos la última prueba que he hecho es un procedimiento que no pasa parametros, y tengo entendido que el stdcall es para que los parametros se pasan con el convenio de c++.

También he probado a mirar todos los hilos que hay de dlls pero en ninguno he encontrado la solución.

Agradecería que alguien que tenga VB6 y delphi hiciera la prueba que estoy intentando hacer yo:

1º Crear en DLL en VB6 con un procedimiento que haga cualquier chorrada, como por ejemplo MsgBox ("Hola")
2º Comporbar que esta DLL funcione desde un ejecutable creado en VB6
3º Intentar usar esta DLL desde Delphi.

Yo no consigo hacerlo, me falta alguna cosa, he seguido los pasos de los ejemplos que he encontrado por internet en el uso de DLLs.

¿Quizas alguna directiva de delphi o alguna opción?, ¿alguien ha tenido el mismo problema?

Un Saludo.

ppb 16-10-2006 12:37:14

Mira este hilo http://www.clubdelphi.com/foros/showthread.php?t=26979


La franja horaria es GMT +2. Ahora son las 18:19:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi