Как передать массив в функцию C++ в GraalWasm с помощью API-интерфейса Polyglot?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 Как передать массив в функцию C++ в GraalWasm с помощью API-интерфейса Polyglot?

Сообщение Гость »


Я написал простой тестовый файл C++. Файл C++ содержит простую функцию, которая устанавливает значение указателя в 42.

extern "C" { void foo(uint8_t* байты) { байты[0] = 42; } } Затем я использовал Emscripten для компиляции файла C++ в Wasm.

emcc foo.cpp -o foo.wasm -s EXPORT_ALL=1 Я попробовал следующий код для вызова функции, но кажется, что параметр uint8_t* преобразуется в Integer и передает byte[] > к этому не допускаются. Я предполагаю, что это указатель на внутреннюю память WASM, но я не знаю, как выделить буфер, скопировать в него массив Java и скопировать содержимое обратно после вызова функции.

static Final Context CONTEXT = Context.newBuilder("wasm") .allowAllAccess(true).option("wasm.Builtins", "wasi_snapshot_preview1,env:emscripten").build(); var bin = IOUtils.resourceToByteArray("/foo.wasm"); CONTEXT.eval(Source.newBuilder("wasm", ByteSequence.create(bin), "foo").build()); var foo = CONTEXT.getBindings("wasm").getMember("main").getMember("foo"); байт [] обр = {0}; System.out.println(arr[0]); // 0 foo.execute(...); // TODO, как этого добиться? System.out.println(arr[0]); // 42 Я хочу, чтобы моя программа была кроссплатформенной, поэтому я не хочу использовать LLVM в GraalVM (говорят, что бит-код LLVM зависит от платформы). Есть ли у кого-нибудь идеи о том, как этого добиться? Можно скопировать массив Java в память WASM, но лучше передать массив напрямую.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Получение «org.graalvm.polyglot.PolyglotException: ReferenceError:» при попытке вызвать файл удаленного объекта, который
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Существование универсального C++/Python Polyglot
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Существование универсального C++/Python Polyglot
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Graalpy graalvm java.lang.noclassdeffounderror: org/graalvm/polyglot/context ошибка
    Anonymous » » в форуме JAVA
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • API API API API API API API
    Anonymous » » в форуме JAVA
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»