Hola JXJ.
Usando Delphi 7 y C++ Builder 6, de este modo me funciona bién:
Código Delphi
[-]
library Directorios;
uses Windows, SysUtils, Classes, SHFolder;
{$R *.res}
function GetSystemFolder(Folder: Integer): PChar;
var
sDir: string;
begin
SetLength(sDir, MAX_PATH);
ZeroMemory(@sDir[1], MAX_PATH);
SHGetFolderPath(0, Folder , 0, 0, PChar(sDir));
Result := PChar(sDir);
end;
function Directorio(dir: string): PChar; stdcall;
begin
Result := GetSystemFolder(CSIDL_PERSONAL);
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 = LoadLibrary("directorios.dll");
if (hDll) {
Directorio = (pFunc) GetProcAddress(hDll, "Directorio");
Edit1->Text = Directorio("DirUserDocs");
}
else
ShowMessage("No se pudo cargar la DLL");
}
...
Saludos
