|
@@ -0,0 +1,35 @@
|
|
|
+program runfib;
|
|
|
+
|
|
|
+uses ctypes, libwasmedge;
|
|
|
+
|
|
|
+var
|
|
|
+ ConfCxt : PWasmEdge_ConfigureContext;
|
|
|
+ VMCxt : PWasmEdge_VMContext;
|
|
|
+ Returns, Params : Array[0..0] of TWasmEdge_Value;
|
|
|
+ FuncName : TWasmEdge_String;
|
|
|
+ Res : TWasmEdge_Result;
|
|
|
+
|
|
|
+begin
|
|
|
+ Loadlibwasmedge('libwasmedge.so');
|
|
|
+ { Create the configure context and add the WASI support.
|
|
|
+ This step is not necessary unless you need WASI support.}
|
|
|
+ ConfCxt:=WasmEdge_ConfigureCreate();
|
|
|
+ WasmEdge_ConfigureAddHostRegistration(ConfCxt, WasmEdge_HostRegistration_Wasi);
|
|
|
+ { The configure and store context to the VM creation can be NULL. }
|
|
|
+ VMCxt:=WasmEdge_VMCreate(ConfCxt,Nil);
|
|
|
+ { The parameters }
|
|
|
+ Params[0] := WasmEdge_ValueGenI32(32);
|
|
|
+ { Function name. }
|
|
|
+ FuncName:=WasmEdge_StringCreateByCString(Pcchar(Pansichar('fib')));
|
|
|
+ { Run the WASM function from file. }
|
|
|
+ Res := WasmEdge_VMRunWasmFromFile(VMCxt, pcchar(PAnsiChar(ParamStr(1))), FuncName, @Params, 1, @Returns, 1);
|
|
|
+ if (WasmEdge_ResultOK(Res)) then
|
|
|
+ Writeln('Get result: ', WasmEdge_ValueGetI32(Returns[0]))
|
|
|
+ else
|
|
|
+ Writeln('Error message: ', PAnsiChar(WasmEdge_ResultGetMessage(Res)));
|
|
|
+ { Resources deallocations. }
|
|
|
+ WasmEdge_VMDelete(VMCxt);
|
|
|
+ WasmEdge_ConfigureDelete(ConfCxt);
|
|
|
+ WasmEdge_StringDelete(FuncName);
|
|
|
+end.
|
|
|
+
|