The second solution assumes that you compile using c++17 or later.

On Fri, 27 Dec 2019 at 07:50, Shachar Langbeheim <[email protected]> wrote:

> Try either add '__attribute__((used))' or defining the constant as 'static
> inline'.
>
> On Thu, 26 Dec 2019 at 20:32, キャロウ マーク <[email protected]> wrote:
>
>> 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
>> .
>>
>

-- 
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/CA%2B_KjGacAEP6RhcKwwG4hiDLLcw3_di9p7YmfYHpcLAnMjm26g%40mail.gmail.com.

Reply via email to