I am trying to use embind to provide a JS API to some c/c++ code. The 
underlying code is c and I have a small wrapper to give it a proper c++ api. My 
file ktx_wrappers.cpp contains this c++ wrapper and the EMSCRIPTEN_BINDINGS. 
Due to the build system I am using, this is first compiled to a .o then in a 
second step linked with the underlying library, also previously compiled, to 
produce the .js file.

The wrapper class contains (simplified for illustration)

namespace ktx_wrappers
{
    class texture
    {
      public:
        ...
        static const uint32_t KTX_FOO = 1;
        ...
    }
}

EMSCRIPTEN_BINDINGS contains

EMSCRIPTEN_BINDINGS(ktx_wrappers)
{
    class_<ktx_wrappers::texture>("ktxTexture")
        .class_property("KTX_FOO", &ktx_wrappers::texture::KTX_FOO)
        …
    ;
}

This compiles fine but on link wasm-ld reports "undefined symbol: 
ktx_wrappers::texture::KTX_FOO”. llvm-nm on ktx_wrappers.o indeed shows that 
this symbol is undefined.

I am specifying —bind on both the compile & link commands.

How to I prevent the compiler removing this symbol? Is it being removed because 
none of the class texture methods reference this static class constant?

Regards

    -Mark




-- 
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/E89A8902-A981-43A2-8C04-6D9CAA99AF10%40callow.im.

Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to