Я пишу демонстрацию webassembly в C, чтобы соответствовать аналогичной демонстрации, которую я написал в Zig. < /p>
Я в настоящее время могу вызвать C -функции из JS и взаимодействовать с общей памятью на любой сторона. Тем не менее, я не могу, казалось, могу разоблачить переменные JS и функции программе C. < /P>
Кто -нибудь знаком с написанием C таким образом? Интересно, как -то неопределенные символы как -то оптимизируются. 0-dev.351+64EF45EB0, используя Clang 16.0.0 на MacOS Sequoia 15.0.1 (aarch64).
Это код, который я написал до сих пор: Br /> resource.c
#include
void print_test(void); // the function I want to use
const unsigned char heap[4096];
int __attribute__((export_name("memstart")))
memstart() {
return (int)&heap;
}
int __attribute__((export_name("return5")))
return5(int p) {
return 5 * p;
}
int __attribute__((export_name("entryAt")))
entryAt(int p) {
print_meme();
return heap[p];
}
< /code>
функциональный
For Stephen
output goes gere
Return 5
Get nth byte
const c = {};
const encoder = new TextEncoder();
const decoder = new TextDecoder();
const importObject = {
"env": {
"print_test": () => console.log("test print")
}
};
WebAssembly.instantiateStreaming(fetch("resource.wasm", importObject))
.then(result => {
const {memory, memstart, return5, entryAt} = result.instance.exports;
console.log(memstart);
c.buffer = new Uint8Array(memory.buffer, memstart());
c.return5 = return5;
c.entryAt = entryAt;
});
const button_r5 = document.getElementById("button_r5");
const button_nth = document.getElementById("button_nth");
const input = document.getElementById("input");
const bytes = document.getElementById("bytes");
const output = document.getElementById("output");
button_r5.addEventListener("click", ()=>{
output.textContent = c.return5(input.value);
});
button_nth.addEventListener("click", ()=>{
c.buffer.set(encoder.encode(bytes.value));
output.textContent = c.entryAt(input.value);
});
< /code>
команда построения < /h2>
zig cc -target wasm32-freestanding -g resource.c -lc -Wl,--no-entry -o resource.wasm
Подробнее здесь: https://stackoverflow.com/questions/794 ... c-and-wasm
JS/C Interop с Zig CC и WASM ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Office.Interop.Excel и Office.Interop.Outlook Развертывание по щелчку мыши и Windows 11
Anonymous » » в форуме C# - 0 Ответы
- 41 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему мое приложение Blazor Wasm загружает 90 файлов .wasm при каждом обновлении страницы?
Anonymous » » в форуме C# - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-