Thank you both for the quick responses. 
Floh, I will try this today.
Geoffrey, I have tried your Generate Javascript Using MATLAB Coder add-on 
in MATLAB, but ran into issues. I posted those issues on the conversation 
that is on that add-on's page.

On Wednesday, April 14, 2021 at 5:13:16 AM UTC-7 gmcv...@gmail.com wrote:

> Hello,
> You may want to look at:
>
> https://www.mathworks.com/matlabcentral/fileexchange/69973-generate-javascript-using-matlab-coder
> There is an update to be released soon that will resolve the issues shown 
> in the discussion. The existing add-on should work so long as you install 
> emscripten using the following flag:
>
> ./emsdk install 1.38.45
>
> Hope this helps.
> On Wednesday, April 14, 2021 at 7:43:02 AM UTC-4 Floh wrote:
>
>> Hi, I quickly cobbled together a "simplest possible sample" for calling a 
>> C function from JS here:
>>
>> https://github.com/floooh/emsc-interop-demo
>>
>> This is running in the browser though and it's a bit quick'n'dirty, but 
>> it should get you started at least 
>> for your own experimentations. The important things are the 
>> EMSCRIPTEN_KEEPALIVE annotation in the
>> hello.c file, and the underscore in front of the addc() function call in 
>> Javascript in shell.html.
>>
>> If you cannot annotate the original source files with 
>> EMSCRIPTEN_KEEPALIVE, you can also provide the 
>> C functions names to make visible to Javascript with a compiler option 
>> instead, see here:
>>
>>
>> https://emscripten.org/docs/getting_started/FAQ.html#why-do-functions-in-my-c-c-source-code-vanish-when-i-compile-to-javascript-and-or-i-get-no-functions-to-process
>>
>> I prefer to work with simple C-APIs instead of C++ APIs, because with 
>> C-APIs you
>> can (more or less) call the functions directly from Javascript instead of 
>> creating a "language binding"
>> between C++ and Javascript interfaces. For this, emscripten has a tool 
>> called "embind" (which adds a whole 
>> new level of complexity and more things that can break, but I guess 
>> that's personal opinion heh). 
>> There are some caveats with non-trivial function arguments (for instance 
>> pointers to data on the WASM heap), 
>> maybe embind makes this case easier, don't know.
>>
>> In any case, here's the embind documentation:
>>
>>
>> https://emscripten.org/docs/porting/connecting_cpp_and_javascript/embind.html
>>
>> Hope this helps!
>>
>> On Wednesday, 14 April 2021 at 02:43:49 UTC+2 HJ wrote:
>>
>>> I am a beginner and I'm sure all the information is there, but I am 
>>> struggling to get even a basic example working. I can run the tutorial 
>>> example, but I can't get anything for the following:
>>>
>>> I have converted some MATLAB .m script files to C (MATLAB can convert to 
>>> C or CPP. I've tried both C and CPP in the below information.)
>>>
>>> MATLAB has 1 function per 1 file, so now I have two .c files with one c 
>>> function in each.
>>>
>>> I've run emcc to convert .c to .js
>>> When I look in the a.out.js and search for "myfunct", all I see for my 
>>> function is the following and I'm not sure how to call it in my js main 
>>> program:
>>>
>>> /** @type {function(...*):?} */ var _myFunc = Module["_myFunc"] = 
>>> createExportWrapper("myFunc");
>>>
>>> I've played around with many different command line parameters that I've 
>>> found on various Q&A forums, but still can't figure out how to create such 
>>> that there is a function called "myFunc" that I can call from my other js 
>>> files (actually typescript, but just assume js for this.)
>>>
>>> This code will be run on the server side, node.js, and not on a browser. 
>>> Backend code that will call these converted MATLAB functions to generate 
>>> data.
>>>
>>> It would be nice to have an example from beginning to end (I've been 
>>> searching and searching, but I only find answers that will say things like, 
>>> "You just need to use the xxxx option", but there is more to the puzzle 
>>> that I am missing. 
>>>
>>> It seems like the examples on emscripten site are all self contained: 
>>> you build and run them, but no example of how to convert a function and how 
>>> to integrate it (call it) from other js code. I have read the many options, 
>>> but again I am not sure exactly what to do. I've also read the comments in 
>>> the produced js file about creating a module and searched, but I am not 
>>> sure how to define a module for a function.
>>>
>>>    - What are the emcc parameters do I use?
>>>    - Can I convert just this one function or do I need to have a main() 
>>>    that calls it?
>>>    - Once converted, it looks like I need to define a module for 
>>>    "myfunc", but I am not sure how it is defined, when to define, do I add 
>>>    after into the .js?
>>>    - What about using the WASM=0 option to only produce js and no WASM. 
>>>    Maybe that is a route to take? (I tried and it produced some different 
>>> code 
>>>    in .js, but i'm still stuck on what to do with it.
>>>
>>> I created the below simple function that takes a double and returns a 
>>> double for trying this. If anyone can show me the steps with this or any 
>>> HelloWorld that takes a parameter and returns it would be greatly 
>>> appreciated. (or even more complex example.)
>>>
>>> Thank helping this newbie! :-)
>>>
>>> *myFunc.c:*
>>>
>>> #include "myfunc.h" 
>>> double myfunc(double myInt) {
>>>    return myInt + 50.0; 
>>> }
>>>
>>> *myFunc.h:*
>>>
>>> #ifndef MYFUNC_H
>>> #define MYFUNC_H
>>>
>>> /* Include Files */
>>> #include "rtwtypes.h"
>>> #include <stddef.h>
>>> #include <stdlib.h>
>>>
>>> #ifdef __cplusplus
>>> extern "C" {
>>> #endif
>>>
>>> /* Function Declarations */
>>> extern double myFunc(double myInt);
>>>
>>> #ifdef __cplusplus
>>> }
>>> #endif
>>>
>>> #endif
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to emscripten-discuss+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/545f735c-a1cd-4083-9d16-923fb69132a4n%40googlegroups.com.

Reply via email to