samples/native-lib: Add an example to use wamr API from native lib (#1649)

Real world native libs likely need to access the wasm_runtime_xxx API.
This example demonstrates it.

Build vmlib as a shared lib to make it straightforward to share a
single runtime instance between iwasm and native libs.
This commit is contained in:
YAMAMOTO Takashi
2022-10-28 20:31:21 +09:00
committed by GitHub
parent 84161fe084
commit 960b613d10
4 changed files with 100 additions and 5 deletions

View File

@ -15,6 +15,9 @@ test_sqrt(int x, int y);
int
test_hello(const char *name, char *buf, size_t buflen);
int
test_hello2(const char *name, char *buf, size_t buflen);
int
main(int argc, char **argv)
{
@ -33,12 +36,35 @@ main(int argc, char **argv)
res = test_hello(name, NULL, 0);
printf("test_hello(\"%s\", %p, %zu) = %d\n", name, NULL, (size_t)0, res);
if (res == -1) {
return -1;
}
buflen = res + 1;
buf = malloc(buflen);
printf("malloc(%zu) = %p\n", buflen, buf);
res = test_hello(__func__, buf, buflen);
if (res == -1) {
return -1;
}
printf("test_hello(\"%s\", %p, %zu) = %d\n", name, buf, buflen, res);
printf("Message from test_hello: %s", buf);
free(buf);
res = test_hello2(name, NULL, 0);
printf("test_hello2(\"%s\", %p, %zu) = %d\n", name, NULL, (size_t)0, res);
if (res == -1) {
return -1;
}
buflen = res + 1;
buf = malloc(buflen);
printf("malloc(%zu) = %p\n", buflen, buf);
res = test_hello2(__func__, buf, buflen);
if (res == -1) {
return -1;
}
printf("test_hello2(\"%s\", %p, %zu) = %d\n", name, buf, buflen, res);
printf("Message from test_hello2: %s", buf);
free(buf);
return 0;
}