Ver Mensaje Individual
  #4  
Antiguo 26-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola JXJ.

Como bién te comenta juanelo el resultado de la función Delphi deberìa ser de tipo PChar:
Código Delphi [-]
library Directorios;

uses
  SysUtils,  Classes; 

{$R *.res}

function Directorio(dir: string): PChar; stdcall;
begin
   Result := 'lalalala';
end;

exports
Directorio;

begin
end.

C++ Builder:
Código:
typedef const char* __cdecl(*pFunc) (char*);  pFunc Directorio;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  HINSTANCE hDll ;

  hDll = LoadLibrary("directorios.dll");
  __try {
    if(hDll) {
      Directorio = (pFunc)GetProcAddress(hDll, "Directorio"); //obtiene el puntero
      Edit1->Text =  Directorio("XXXX"); // ( lalalala )
    } else
      ShowMessage("No se pudo cargar la DLL");
  }
  __finally {
    FreeLibrary(hDll);
  }
}
Fijate que en la declaración uso __cdecl en lugar de __stdcall. Y que en el código de ejemplo, es necesario que el archivo directorios.dll se encuentre en la misma ubicación del proyecto c++.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita