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.
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to