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
