Thanks for the link to that article, it is very helpful. I am trying that 
approach now. 

lucoy

On Sunday, April 13, 2014 11:23:02 AM UTC-7, Joshua Litt wrote:
>
> I can't speak to the nuances of what you are trying to do, personally I 
> abandoned embind when it became clear I would end up having to wrap my 
> entire api anyways.  The regular emscripten C interfaces are pretty 
> intuitive, though I am not sure there is anyway to pass in structs and this 
> has made it a real pain for me(20+ arguments to functions).
>
> This article: 
> http://kapadia.github.io/emscripten/2013/09/13/emscripten-pointers-and-pointers.htmlexplains
>  well how to pass in arrays to emscripten compiled C, you can wrap 
> your C++ functions in C and then pass in arrays that way.
>
> Sorry I can't help more with embind.
>
> On Saturday, April 12, 2014 2:19:34 AM UTC-7, [email protected] wrote:
>>
>> I am in the process of porting a crypto implementation to JS using 
>> emscripten.  The compilation of C++ code to js is pretty smooth. But I have 
>> some issues in dealing the interaction of JS and compiled C++ code. I have 
>> a few question and hope to get some advice from this list. 
>>
>> 1. In recent releases uses fastcomp, and and it seems embind no longer 
>> works. If I use 'extern "C"' to disable the c++ mangling, and use cwrap 
>> to call c function from Js, it should work, right?
>>
>> 2. I personally prefer to use "embind", that allow me to expose C++ class 
>> to JS directly. I will have to use 12.0 or earlier release. Is it a 
>> recommended practice? Can I expect embind be supported again?
>>
>> 3. I need to pass ArrayBuffer from JS to compiled C++ code, and get back 
>> a new (or modified) ArrayBuffer. It is not clear to me how can I do it. The 
>> simplified code will be something like this:
>> class MyCrypto {
>>    MyCryto();
>>  
>>    void Process(const string& input, vector<string>& output); 
>> };
>>
>> EMSCRIPTEN_BINDINGS(MyCryptoModule) {
>>   class_<MyCrypto>("MyCrypto").constructor()
>>   .function("Process", &MyCrypto::Process);
>>   register_vector<std::string>("VectorString");
>> }
>>
>>
>> This code compiled well. But I don't know how JS code can be written to 
>> call function. 
>>
>> var crypto = new Module.MyCrypto();
>> crypto.Process(...);
>>
>> I would like the input to be ArrayBuffer, 
>> var input = new ArrayBuffer(256);
>>
>> What will be the output look like? Will this work at all? 
>>
>> If std::vector brings trouble, I can give it up and change "output" to be 
>> std::string. 
>>    void Process(const string& input, string& output); 
>>
>> Compiler will complain about this form. 
>> error: non-const lvalue reference to type 'basic_string[[3 * ...]>' 
>> cannot bind to a temporary of type 'basic_string[[3 * ...]>
>>
>> Thanks in advance
>>
>> lucoy
>>
>>  
>>
>>

-- 
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.

Reply via email to