Hi Thomas, I reproduce it using version 1.36.14. I cannot use newer versions (>=1.37.0) yet due to required dependencies I'm obligated not to use in my project.
W dniu środa, 4 września 2019 17:53:12 UTC+2 użytkownik Thomas Lively napisał: > > Hi Pawel, > > I notice that the emscripten version you’re using is quite old. Can you > reproduce the issue with the latest version? > > On Sep 4, 2019, at 06:38, Pawel <[email protected] <javascript:>> wrote: > > Hello All, > > I get a TypeError: Module.ClassA is not a constructor error while > creating object. > I'm having a simple header class defined in header class_a.h: > > namespace MyNamespace > > { > > class ClassA > > { > > public: > > ClassA(); > > void PrintName(); > > }; > > } > > > and its implemetation in class_a.cpp > > #include <iostream> > > #include "class_a.h" > > namespace MyNamespace > > { > > ClassA::ClassA() > > { > > std::cout << "MyNamespace::ClassA constructor" << std::endl; > > } > > void ClassA::PrintName() > > { > > std::cout << "MyNamespace::ClassA::PrintName method" << std::endl; > > } > > } > > > I described in interface in class_a.idl: > > [Prefix="MyNamespace::"] > > interface ClassA > > { > > void ClassA(); > > void PrintName(); > > }; > > > Next I create glue files with: > > python ${EMSCRIPTEN_ROOT}/tools/webidl_binder.py class_a.idl class_a_glue > > > And glue_wrapper.cpp containing > > #include "class_a.h" > > #include "class_a_glue.cpp" > > > Now I'd like to create bitcode > > em++ class_a.cpp glue_wrapper.cpp --post-js class_a_glue.js -o class_a.bc > > and finally the javascript > > em++ class_a.bc -o class_a.js > > > Up to now everything works fine, neither error nor warning reported. > > I define simle client.js script creating object and calling method: > > var obj = new Module.ClassA(); > > obj.PrintName(); > > > When I load both class_a.jd and client.js scripts in html I get > > client.js:1 Uncaught TypeError: Module.ClassA is not a constructor at > client.js:1 > > > > The interesting is that, if I create javascript in one step (without > intermediate .bc) then it works fine - I see proper printouts in browser > console. > I'm however not likely going this way because I've got a bunch of classes > I'd like to put into one javascript, e.g. > > em++ class_a.cpp glue_wrapper.cpp --post-js class_a_glue.js -o class_a.bc > em++ class_b.cpp b_glue_wrapper.cpp --post-js class_b_glue.js -o class_b.bc > em++ class_c.cpp c_glue_wrapper.cpp --post-js class_c_glue.js -o class_c.bc > ... > em++ class_a.bc class_b.bc class_c.bc ... -o class_a.js. > > I'm using: > emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) > 1.35.23 > clang version 3.9.0 (emscripten 1.35.23 : 1.35.23) > > Why it does not work with intermediate bitcode step? Or maybe my approach > is incorrect? > > Best regards, Paweł > > -- > 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:>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/emscripten-discuss/fba850f3-944d-4626-a28b-bf1d376b76aa%40googlegroups.com > > <https://groups.google.com/d/msgid/emscripten-discuss/fba850f3-944d-4626-a28b-bf1d376b76aa%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- 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]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/b3b0c1e1-74cd-401f-a7d2-093cff32ddea%40googlegroups.com.
