Ah ok, I misunderstood your question, apologies. I don't know how one would 
add a function declaration to the WASM imports table like this. 
EMSCRIPTEN_KEEPALIVE and the "-s EXPORTED_FUNCTIONS" linker option would 
work for the "other side" (some WASM module exporting functions to the 
outside).

Complete guess, but maybe you need some "dummy code" that's guaranteed to 
stay in the importing WASM module, even though this is never called? So 
that the linker would recognize the function as an "import".

Something like this:

extern "C" void foo();
// dummy_imports() is never called, but will not be removed because of 
EMSCRIPTEN_KEEPALIVE
EMSCRIPTEN_KEEPALIVE void dummy_imports(void) {
   foo();
}

But as I said, this is complete guess.

On Thursday, 2 May 2019 16:22:28 UTC+2, Duan Bing wrote:
>
> Thanks, Floh.  it works when the function is defined.
> Actually, my function is an external function declaration, like 
> extern "C" void foo(); 
>
> It doesn't work even I declare like this:
> extern "C" void EMSCRIPTEN_KEEPALIVE foo().
>
> Do you have any idea for this situation?
>
> Floh <[email protected] <javascript:>> 于2019年5月2日周四 下午10:13写道:
>
>> Have a look at EMSCRIPTEN_KEEPALIVE: 
>> https://emscripten.org/docs/api_reference/emscripten.h.html#c.EMSCRIPTEN_KEEPALIVE,
>>  
>> this prevents a C/C++ function from being removed even when it isn't 
>> referenced by other C/C++ code (normally this is used to call C functions 
>> from the JS side).
>>
>> On Thursday, 2 May 2019 08:16:43 UTC+2, Duan Bing wrote:
>>>
>>> I declare an external function in C source file, but never used by the 
>>> code, then compile it to wasm by EMCC.   there is no doubt the external 
>>> function will be eliminated by the compiler.
>>>
>>> Is there any approach to keep this external function and then be 
>>> compiled to an import function in wasm? 
>>>
>>> The motivation to remain the external function is that I want to insert 
>>> some wasm code in the wasm file after it's generated.
>>>
>>> Thanks all!
>>>
>> -- 
>> 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:>.
>> 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.

Reply via email to