Gotcha, thanks. On Sep 12, 2014 12:55 PM, "Bruce Mitchener" <[email protected]> wrote:
> Needs to be C for the JS library stuff to work. > > - Bruce > > > On Fri, Sep 12, 2014 at 10:09 AM, Arve Knudsen <[email protected]> > wrote: > >> Bruce, can you comment on the C++ thing though? Could I write this JS >> implementation for a C++ class instead, or does it have to be C? >> >> Arve >> >> On Fri, Sep 12, 2014 at 12:08 PM, Arve Knudsen <[email protected]> >> wrote: >> >>> Bruce, ahhh thank you, that was the missing piece of the puzzle. It >>> works now! >>> >>> Arve >>> >>> On Fri, Sep 12, 2014 at 12:05 PM, Bruce Mitchener < >>> [email protected]> wrote: >>> >>>> You don't want to put your function inside the $RTAUDIO object. >>>> >>>> You'd just put it at top level in the LibraryRtAudio object. $RTAUDIO >>>> is where you'll put shared internal stuff. >>>> >>>> - Bruce >>>> >>>> >>>> On Fri, Sep 12, 2014 at 9:58 AM, Arve Knudsen <[email protected]> >>>> wrote: >>>> >>>>> I need to write a shim for the C++ API RtAudio, i.e. the class RtAudio >>>>> really. Your docs show how to write shims for C APIs (e.g. SDL), but not >>>>> C++ APIs: >>>>> http://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html?highlight=webidl#implement-a-c-api-in-javascript. >>>>> No idea how embind/webidl-binder would fit into this scenario. >>>>> >>>>> Anyhow, I wrote a (very) simple C wrapper for RtAudio, thus >>>>> sidestepping the C++ issue, so I can just write a C API shim. I try to >>>>> implement a single C function, rtaudio_initialize, in JavaScript, but it's >>>>> not found by the generated JavaScript (chuck.js). I can tell that the shim >>>>> (or JavaScript library) is used when building however, since I can have it >>>>> break the build by throwing an exception. Why is my JS implementation of >>>>> rtaudio_initialize not found?? >>>>> >>>>> My shim can be seen here: >>>>> https://github.com/aknuds1/chuck/blob/emscripten/src/emscripten/shims/rtaudio.js, >>>>> and it's incorporated in the build via the --js-library option to >>>>> emcc: --js-library emscripten/shims/rtaudio.js. >>>>> >>>>> Thanks, >>>>> Arve >>>>> >>>>> On Fri, Sep 12, 2014 at 11:31 AM, Alon Zakai <[email protected]> >>>>> wrote: >>>>> >>>>>> What do you mean by "shim a C++ API"? And in what way are embind and >>>>>> the webidl-binder not sufficient? >>>>>> >>>>>> - Alon >>>>>> >>>>>> >>>>>> On Thu, Sep 11, 2014 at 7:29 PM, Arve Knudsen <[email protected] >>>>>> > wrote: >>>>>> >>>>>>> I can't see that those docs mention how to shim a C++ API in >>>>>>> JavaScript? There is a section on C API though, and how to integrate >>>>>>> your >>>>>>> shims, so that's helpful at least. Is it simply not possible to shim a >>>>>>> C++ >>>>>>> API? If so, I'll have to write a C wrapper instead I guess. >>>>>>> >>>>>>> Arve >>>>>>> >>>>>>> >>>>>>> On Fri, Sep 12, 2014 at 11:17 AM, Alon Zakai <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> General docs on that are at >>>>>>>> http://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html?highlight=webidl >>>>>>>> >>>>>>>> In particular if you are going to use C++ classes from JS, you >>>>>>>> probably want embind or webidl-binder. >>>>>>>> >>>>>>>> - Alon >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Sep 11, 2014 at 7:02 PM, Arve Knudsen < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> Hi guys >>>>>>>>> >>>>>>>>> As pertaining my previous more general question about writing >>>>>>>>> Emscripten shims, I have a more specific follow-up question. How can I >>>>>>>>> write an Emscripten shim library to mimic the RtAudio C++ class >>>>>>>>> constructor >>>>>>>>> ( >>>>>>>>> http://www.music.mcgill.ca/~gary/rtaudio/classRtAudio.html#afd0bfa26deae9804e18faff59d0273d9)? >>>>>>>>> And how do I integrate said shim into my build, so that invoking the >>>>>>>>> constructor works? The shim will eventually need to do more than just >>>>>>>>> mimic >>>>>>>>> the constructor of course, but that would be a superb start. >>>>>>>>> >>>>>>>>> For context, what I'm trying to do is to port the ChucK music >>>>>>>>> programming language to JS, my GitHub project can be found here >>>>>>>>> (branch >>>>>>>>> emscripten): https://github.com/aknuds1/chuck/tree/emscripten. >>>>>>>>> The README includes instructions on how to build with Emscripten. >>>>>>>>> >>>>>>>>> Let me know if you need to know more. >>>>>>>>> >>>>>>>>> Best, >>>>>>>>> Arve >>>>>>>>> >>>>>>>>> -- >>>>>>>>> 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. >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> 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. >>>>>> >>>>> >>>>> -- >>>>> 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. >>>> >>> >>> >> -- >> 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. > -- 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.
