www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How do I make this function from module public?

reply Jack <jckj33 gmail.com> writes:
I'm playing with wasm, I wrote a small module where I'd like to 
make the function available but wasm can't find this function.

math.d

module math;
extern(C):
int mul(int a, int b) { return a *  b;}
wasm.d
public import math;
extern(C): // disable D mangling
void doSomething() { ... } // seems to be the required entry 
point
void _start() {}
start.html: <html> <head> <script> (async() => { const response = await fetch('wasm.wasm'); const bytes = await response.arrayBuffer(); const { instance } = await WebAssembly.instantiate(bytes); const res = instance.exports.mul(2, 4); console.log('The answer is: ' + res); document.getElementById("result").innerHTML = "The result is: " + res; })(); </script> </head> <body> Test page <h1 id="result"></h1> </body> </html> the exported function fails to find 'mul' function, as I can see from the browser's console:
start.html:8 Uncaught (in promise) TypeError: 
instance.exports.mul is not a >function at start.html:8
can I make it public using D or do I have to import the wanted module with javascript?
Oct 13 2020
next sibling parent Jack <jckj33 gmail.com> writes:
I'm compiling with

 ldc2 -mtriple=wasm32-unknow-unknow-wasm -betterC wasm.d
Oct 13 2020
prev sibling parent reply Adam D. Ruppe <destructionator gmail.com> writes:
On Wednesday, 14 October 2020 at 01:46:11 UTC, Jack wrote:
extern(C):
int mul(int a, int b) { return a *  b;}
mark it `export` as well and then be sure you are compiling in this module as well, it must be included on the ldc command line along with wasm.d
Oct 13 2020
parent Jack <jckj33 gmail.com> writes:
On Wednesday, 14 October 2020 at 01:55:13 UTC, Adam D. Ruppe 
wrote:
 On Wednesday, 14 October 2020 at 01:46:11 UTC, Jack wrote:
extern(C):
int mul(int a, int b) { return a *  b;}
mark it `export` as well and then be sure you are compiling in this module as well, it must be included on the ldc command line along with wasm.d
worked, thanks!
Oct 14 2020