/
mrb_mruby_require_example.c
46 lines (39 loc) · 1.11 KB
/
mrb_mruby_require_example.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// WINDOWS:
// gcc -Ic:/path/to/mruby/include -shared -o mrb_mruby_require_example.dll \
// mrb_mruby_require_example.c \
// /path/to/mruby/build/host/lib/libmruby_core.a -lm
// UNIX:
// gcc -I/path/to/mruby/include -shared -o libmrb_mruby_require_example.so \
// mrb_mruby_require_example.c -rdynamic \
// /path/to/mruby/build/host/lib/libmruby_core.a -lm
//
#include <mruby.h>
#include <mruby/string.h>
#ifndef MRB_EXPORT
# ifdef _WIN32
# define MRB_EXPORT __declspec(dllexport)
# else
# define MRB_EXPORT
# endif
#endif
/*
void
mrb_init_mrblib(mrb_state *mrb) {
}
void
mrb_init_mrbgems(mrb_state* mrb) {
}
*/
static struct RClass *_class_example;
static mrb_value
mrb_example_helloworld(mrb_state *mrb, mrb_value self) {
return mrb_str_new_cstr(mrb, "こんにちわ世界");
}
void EXPORT
mrb_mruby_require_example_gem_init(mrb_state* mrb) {
int ai = mrb_gc_arena_save(mrb);
_class_example = mrb_define_module(mrb, "Example");
mrb_define_class_method(mrb, _class_example, "helloworld", mrb_example_helloworld, ARGS_NONE());
mrb_gc_arena_restore(mrb, ai);
}
/* vim:set et ts=2 sts=2 sw=2 tw=0: */