es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna forma sencilla de solicitar que emscripten emita wasm sin deformar sus nombres?

Aquí está mi código en C:


#include <emscripten.h> #ifdef __cplusplus extern "C" { #endif EMSCRIPTEN_KEEPALIVE int add(int a, int b) { return a + b; } #ifdef __cplusplus } #endif

Lo ejecuté con el siguiente comando: emcc -O3 add.c -s EXPORTED_FUNCTIONS=_add, me dio la salida wasm que está cerca de lo que quiero, pero el nombre está enmascarado, la salida generada es algo similar a lo siguiente:

Type[2]:
 - type[0] () -> nil
 - type[1] (i32, i32) -> i32
Function[2]:
 - func[0] sig=0 <b>
 - func[1] sig=1 <c>
Table[1]:
 - table[0] type=funcref initial=1 max=1
Memory[1]:
 - memory[0] pages: initial=256 max=256
Export[4]:
 - memory[0] -> "a"
 - func[0] <b> -> "b"
 - func[1] <c> -> "c"
 - table[0] -> "d"
Code[2]:
 - func[0] size=3 <b>
 - func[1] size=7 <c>

Aquí, c es el nombre enmascarado de add, ¿hay alguna manera de decirle a emcc que no enmascare su nombre?</emscripten.h>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de indicarle a emcc que no modifique el nombre de tu función C. Puedes utilizar la bandera EXPORT_NAME para especificar el nombre de la función exportada. Por ejemplo, si deseas exportar la función add sin modificar su nombre, puedes modificar el comando de compilación de la siguiente manera:

    emcc -O3 add.c -s EXPORTED_FUNCTIONS='_add' -s EXPORTED_FUNCTION_NAMES='["add"]'

    Con este comando, la función se exportará internamente como _add, pero su nombre será visible como add externamente. Esto simplificará el uso de tu función C en el código JavaScript.

Comments are closed.