Как я могу экспортировать функцию, определенную в таблице wasm?
Вот мой файл с отходами:
(module
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$j (func (result i64)))
(type $FUNCSIG$vjj (func (param i64 i64)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$i (func (result i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$v (func))
(import "env" "action_data_size" (func $action_data_size (result i32))
(import "env" "current_time" (func $current_time (result i64)))
(import "env" "prints" (func $prints (param i32)))
(import "env" "read_action_data" (func $read_action_data (param i32 i32) (result i32)))
(import "env" "require_auth2" (func $require_auth2 (param i64 i64)))
(table 4 4 anyfunc)
(elem (i32.const 0) $__wasm_nullptr $_ZN5hello7testoneEv $_ZN5hello7testtwoEv $_ZN5hello9testthreeEv)
(memory $0 1)
...
А вот мой файл JS:
function loadWebAssembly (path, imports = {}) {
return fetch(path)
.then(response => response.arrayBuffer())
.then(buffer => WebAssembly.compile(buffer))
.then(module => {
imports.env = imports.env || {}
Object.assign(imports.env, {
memoryBase: 0,
tableBase: 0,
memory: new WebAssembly.Memory({
initial: 256,
maximum: 512,
}),
action_data_size: action_data_size,
current_time: get_current_time,
eosio_assert: assert,
memcpy: memcpy,
read_action_data: read_action_data,
require_auth2: auth2,
prints:prints,
printui:prints,
});
// create WebAssembly instance
return new WebAssembly.Instance(module, imports)
})
}
loadWebAssembly('./hello.wasm')
.then(instance => {
// **How can I export and call function "_ZN5hello7testoneEv" here?**
})
Если функция находится в списке экспортируемых функций в wasm, я могу найти способ экспортировать и вызывать ее, но только если функция объявлена в таблице wasm, в настоящее время я не имею понятия ее экспортировать и вызывать.
Спасибо всем, кто может поделиться подсказкой.