View wasmer-c-api-8.c
// Call the exported "hello_wasm" function of our instance | |
wasmer_value_t params[] = {}; | |
wasmer_value_t result_one; | |
wasmer_value_t results[] = {result_one}; | |
wasmer_result_t call_result = wasmer_instance_call(instance, "_hello_wasm", params, 0, results, 1); | |
printf("Call result: %d\n", call_result); | |
assert(call_result == WASMER_OK); | |
assert(print_str_called); | |
// Use *_destroy methods to cleanup as specified in the header documentation |
View wasmer-c-api-7.c
// Call the exported "hello_wasm" function of our instance | |
wasmer_value_t params[] = {}; | |
wasmer_value_t result_one; | |
wasmer_value_t results[] = {result_one}; | |
wasmer_result_t call_result = wasmer_instance_call(instance, "_hello_wasm", params, 0, results, 1); | |
printf("Call result: %d\n", call_result); | |
assert(call_result == WASMER_OK); | |
assert(print_str_called); | |
// Use *_destroy methods to cleanup as specified in the header documentation |
View wasmer-c-api-6.c
// Read the wasm file bytes | |
FILE *file = fopen("wasm-sample-app/target.wasm", "r"); | |
fseek(file, 0, SEEK_END); | |
long len = ftell(file); | |
uint8_t *bytes = malloc(len); | |
fseek(file, 0, SEEK_SET); | |
fread(bytes, 1, len, file); | |
fclose(file); | |
// Creates a WebAssembly Instance from wasm bytes and imports |
View wasmer-c-api-5.c
// Create module name for our imports | |
// represented in bytes for UTF-8 compatability | |
char *module_name = "env"; | |
wasmer_byte_array module_name_bytes; | |
module_name_bytes.bytes = module_name; | |
module_name_bytes.bytes_len = strlen(module_name); | |
// Define a function import | |
char *import_name = "_print_str"; | |
wasmer_byte_array import_name_bytes; |
View wasmer-c-api-4.c
int main() | |
{ | |
wasmer_value_tag params_sig[] = {WASM_I32, WASM_I32}; | |
wasmer_value_tag returns_sig[] = {}; | |
wasmer_import_func_t *func = wasmer_import_func_new(print_str, params_sig, 2, returns_sig, 0); |
View wasmer-c-api-3.c
void print_wasmer_error() | |
{ | |
int error_len = wasmer_last_error_length(); | |
printf("Error len: `%d`\n", error_len); | |
char *error_str = malloc(error_len); | |
wasmer_last_error_message(error_str, error_len); | |
printf("Error str: `%s`\n", error_str); | |
} |
View wasmer-c-api-2.c
void print_str(wasmer_instance_context_t *ctx, int32_t ptr, int32_t len) | |
{ | |
print_str_called = true; | |
wasmer_memory_t *memory = wasmer_instance_context_memory(ctx, 0); | |
uint32_t mem_len = wasmer_memory_length(memory); | |
uint8_t *mem_bytes = wasmer_memory_data(memory); | |
printf("%.*s", len, mem_bytes + ptr); | |
} |
View wasmer-c-api-1.c
#include "wasmer.h" |
View source.c
extern void print_str(char *ptr, int len); | |
int hello_wasm() | |
{ | |
char *str = "Hello, World!"; | |
print_str(str, 13); | |
return 0; | |
} |
View wasmer-c-api-example.c
#include <stdio.h> | |
#include "rust-build/src/wasmer-runtime-c-api/lib/runtime-c-api/wasmer.h" | |
#include <assert.h> | |
#include <stdint.h> | |
static print_str_called = false; | |
// Host function that will be imported into the Web Assembly Instance | |
void print_str(wasmer_instance_context_t *ctx, int32_t ptr, int32_t len) | |
{ |
NewerOlder