Hi, I am investigating why Qt on armel has problems.
I think that one of the problems is that when c-functions are called from pascal that the parameters are not passed correctly (or not as I expected and accommodated for). I noticed that when the parameter is a "<procedure variable type of procedure of object;CDecl>" like @MyMethod (method of a class, with a cdecl decoration) that the c-functions do not get the correct addresses. When I change the pascal definition of the external c-function and replace the "procedure () of object cdecl;" with 2 pointer parameters (MethodFunc,MethodData:Pointer) and use (@TClass.MyMethod,Self) ... well then it works fine. In the C-library I expect to receive a struct that I declared like this: typedef struct { void *func; void *data; } QHook; Pascal: type QAbstractButton_clicked2_Event = procedure () of object cdecl; // when c-function declared like this procedure QAbstractButton_hook_hook_clicked2(handle: QAbstractButton_hookH; hook: QAbstractButton_clicked2_Event); cdecl; external Qt4PasLib name 'QAbstractButton_hook_hook_clicked2'; // then this call does not work QAbstractButton_hook_hook_clicked2(Hook,@MyMethod); // when c-function declared like this procedure testhook(handle: QAbstractButton_hookH; HookFunc,HookData:Pointer); cdecl; external Qt4PasLib name 'QAbstractButton_hook_hook_clicked2'; // then this works in constructor of TMyClass testhook(Hook,@TMyClass.MyMethod,self) fpc: latest svn, compiled with -dFPC_ARMEL Code:{$mode objfpc}{$H+} kind regards, Den Jean _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel