Du musst das Objekt auch übergeben (vereinfacht) und nimm keinen string:
Delphi-Quellcode:
TCallbackProcedure = procedure(obj: Tobject; Msg: widestring); stdcall;
procedure ShowDLLMessageExt(obj: TObject; sMsg: widestring); stdcall;
begin
TintDll(obj).OnMyMsg(sMsg);
end;
...
MyCallbackProc(self, @ShowDLLMessageExt)