We use EXPORTED_FUNCTIONS/cwrap() currently, but that doesn’t take care of struct parameters and return types — or dies it? — Lóránt
On Thu, Aug 28, 2014 at 5:45 AM, nagappan nachiappan <[email protected]> wrote: > Just answering the part - "how can I call a C function with a char* > parameter from JS?" > You may want to try this ( modified version of stackoverflow post 21816960 > <http://stackoverflow.com/a/25497901/868791> ): > Test.c > #include <emscripten.h>#include <string.h> > int stringLen(char* p){ > return strlen(p);} > Use the following command to compile the cpp code : > emcc Test.c -s EXPORTED_FUNCTIONS="['_stringLen'] > Sample test code : > Test.html > <!DOCTYPE html><html lang="en"> > <head> > <meta charset="utf-8"> > <title>Hello World !</title> > <script src="a.out.js"></script> > <script> > var strLenFunction = Module.cwrap('stringLen', 'number', > ['string']); > var len1 = strLenFunction("hi."); // alerts 3 > alert(len1); > var len2 = strLenFunction("Hello World"); // alerts 11 > alert(len2); > </script> > </head></html> > -Nagappan > On Wednesday, August 27, 2014 5:22:19 AM UTC+8, Lóránt Pintér wrote: >> >> I managed to add bindings to my library, thanks. However, most of the >> functions in the library rely on passing char* back-and-forth, so adding >> wrapper functions to all of them is unfeasible. It would also make the API >> look different from JS than from C, which is a blocker for me. Do you maybe >> know when char* support would be added to embind? >> — >> Lóránt >> >> >> On Tue, Aug 26, 2014 at 10:31 PM, Chad Austin <[email protected] >> <javascript:>> wrote: >> >>> I believe that's on the embind todo list. (Since pointers don't have >>> unambiguous semantics, the bindings would need explicit pointer policies, >>> and that work hasn't been done yet.) >>> >>> However, there's a workaround! You can do something like: >>> >>> #include <Library.h> >>> // assume Library.h declares: void libraryFunction(const char*); >>> >>> static void libraryFunctionWrapper(const std::string& s) { >>> libraryFunction(s.c_str()); >>> } >>> >>> EMSCRIPTEN_BINDINGS(Library) { >>> function("libraryFunction", &libraryFunctionWrapper); >>> } >>> >>> >>> >>> On Tue, Aug 26, 2014 at 1:28 PM, Lóránt Pintér <[email protected] >>> <javascript:>> wrote: >>> >>>> Hi, >>>> >>>> Is it possible in embind to treat char* as a JS string? If not, how can >>>> I call a C function with a char* parameter from JS? >>>> >>>> Thanks >>>> — >>>> Lóránt >>>> >>>> -- >>>> 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 [email protected] >>>> <javascript:>. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> >>> >>> -- >>> Chad Austin >>> Technical Director, IMVU >>> http://engineering.imvu.com <http://www.imvu.com/members/Chad/> >>> http://chadaustin.me >>> >>> >>> -- >>> 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 [email protected] <javascript:>. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> > -- > 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 [email protected]. > For more options, visit https://groups.google.com/d/optout. -- 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
