[Lazarus] Callback and Threads problem

michael.vancanneyt at wisa.be michael.vancanneyt at wisa.be
Fri Apr 6 14:39:10 CEST 2012



On Fri, 6 Apr 2012, Leonardo M. Ramé wrote:

> I have a similar problem to this:
>
> http://www.lazarus.freepascal.org/index.php?topic=10571.0
>
> My main program launches a thread, that loads a shared library, then
> execute a function who receives as a parameter a pointer to a callback
> function and an instance of the caller, as this:
>
> procedure TMythread.execute;
> begin
>  ...
>  // external function
>  runcode(@MyCallBack, @Self);
>  ...
> end;
>
> procedure MyCallback(const Result: PAnsiChar; const ACaller: pointer);
> cdecl;
> var
>  lCaller: TMythread;
> begin
>  // the parameter ACaller is used because callbacks can't be of type
>  // procedure of object.
>  lCaller := TMyThread(ACaller);
>  lCaller.TestVar := Result; // <--- Ok.
>  lCaller.ListOfThings.Add;  // <--- SIGSEGV

IMHO the problem is not in threads.

You cannot pass objects to libraries or vice versa.
The VMTs will differ.

Michael.


More information about the Lazarus mailing list