winelib an fpc

Reinier Napoles Martinez rnapoles at hlg.uci.cu
Mon Aug 29 16:05:45 CDT 2011


best regards 
I would like to know 
if it is possible to use the wine libraries with freepascal compiler.
kylix had a modified version of the wine libraries and I believe that it was possible to invoke them from pascal.
I've tried several ways but all I get is "segment fault".

sorry for my English.
Thanks.

program test01;

{$MODE Delphi}
uses types;


Type
    BOOL = LongBool;  



function GetCursorPos(var lpPoint: TPoint): BOOL; stdcall; external 'libuser32.so' name 'GetCursorPos';


var
  a:Tpoint;

begin
 
  WriteLn('Calling wine function');
  GetCursorPos(a);
  WriteLn('End Calling wine function');
  WriteLn(a.x);
 
end.


program test02;
{$Mode Delphi}
uses sysutils,types;



Type
    BOOL = LongBool;  
   TGetCursorPos=Function(var lpPoint: TPoint): BOOL;cdecl;



Function dlopen(name: pchar;mode: longint):pointer;cdecl;external 'dl';
Function dlsym(lib: pointer; name: pchar):pointer;cdecl;external 'dl';
Function dlclose(lib: pointer):longint;cdecl;external 'dl';

var
  lib : pointer;
  GetCursorPos:TGetCursorPos;
  a:Tpoint;
begin
 
  lib:=dlopen('/usr/lib/wine/user32.dll.so',1);

  if lib <> nil then
  	@GetCursorPos:=dlsym(lib,'GetCursorPos')
	else begin
		WriteLn('library not loaded');
		exit;	
	end;

	if Assigned(GetCursorPos) then begin
  		WriteLn('Calling GetCursorPos');

		Try
			GetCursorPos(a);
		Except
			 on E : Exception do  WriteLn(E.Message);
		end;
		WriteLn('X:',a.x,'  Y:',a.Y);
	

		
	end
	else begin
		WriteLn('function not loaded');
		exit;	
	end;

 
  dlclose(lib);
end.


-- 
*********************************************************************
En la tierra hace falta personas que trabajen más y critiquen menos,
que construyan más y destruyan menos, que prometan menos y
resuelvan más que esperen recibir menos y dar más que digan mejor
ahora que mañana.
                                                 Che
*********************************************************************

-- 
*********************************************************************
En la tierra hace falta personas que trabajen más y critiquen menos,
que construyan más y destruyan menos, que prometan menos y
resuelvan más que esperen recibir menos y dar más que digan mejor
ahora que mañana.
                                                 Che
*********************************************************************



More information about the wine-devel mailing list