program gvmtest; uses gvm, Classes, TypInfo; {$M+} type GMath = class published procedure blaat(a : string); stdcall; end; {$M-} procedure GMath.blaat(a : string); stdcall; begin writeln('a: ', a); end; var gm : GMath; sig : GSignature; c : GContext; cb : GCodeBlock; p : integer; begin sig.resultType := varNull; setLength(sig.paramTypes, 1); sig.paramTypes[0] := varString; gm := GMath.Create; registerExternalMethod('blaat', gm, gm.MethodAddress('blaat'), sig); c := GContext.Create; cb := loadCode('test.cod'); c.Load(cb); p := c.findSymbol('main'); if (p <> -1) then begin writeln('Executing at ', p, '...'); c.setEntryPoint(p); c.Execute; end else writeln('Could not find entrypoint.'); end.