1234567891011121314151617181920212223242526272829303132333435 |
- 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.
|