Rust: ERROR_ON_UNDEFINED_SYMBOLS = 1 всСгда пСрСдаСтся для emcc, эффСктивно ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ любоС динамичСскоС связываниС

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 4 мая 2017  Β·  1ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: rust-lang/rust

ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Ρ€ΠΆΠ°Π²Ρ‡ΠΈΠ½Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скомпилирован с использованиСм Ρ†Π΅Π»ΠΈ wasm32-unknown-emscripten

extern {
  #[link(name="env")]
  fn log_event(id: *const u8);
}

fn main() {
    unsafe { log_event(::std::ptr::null()); }
}

с участиСм

  error: unresolved symbol: log_event

ΠΏΠΎΠΏΡ€Π°Π²ΡŒΡ‚Π΅ мСня, Ссли я ошибаюсь, я ΠΌΠΎΠ³Ρƒ Π±Ρ‹Ρ‚ΡŒ уТасно Π½Π΅ΠΏΡ€Π°Π² Π² этом, Π½ΠΎ #[link] Π±Π΅Π· kind=static ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ, ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ?

Π§Ρ‚ΠΎ касаСтся самого emscripten, Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с компиляциСй ΠΊΠΎΠ΄Π° C ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

extern void log_event(void* ptr);

int main() {
    log_event(0);
}

с emcc <source above.c> -O3 -s WASM=1 -s SIDE_MODULE=1 -o result.wasm
созданиС Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ записи ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² result.wasm

  (import "env" "_log_event" (func (;0;) (type 0)))

Π˜Ρ‚Π°ΠΊ, вопрос Π² Ρ‚ΠΎΠΌ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ динамичСскиС символы Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ wasm? Или, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ этот Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° ERROR_ON_UNDEFINED_SYMBOLS ?

ссылка Π½Π° источник Π±ΡƒΠ΄Π΅Ρ‚:
https://github.com/rust-lang/rust/blob/ec27aa97b921957711b96e578c7c197ff28553ac/src/librustc_back/target/wasm32_unknown_emscripten.rs#L21

C-bug O-asmjs O-wasm

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@NikVolf Π½Π° самом Π΄Π΅Π»Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ emcc с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния EMMAKEN_CFLAGS .
(ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ вашС имя Ρ„Π°ΠΉΠ»Π° main.rs )

export EMMAKEN_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" 
rustc --target=wasm32-unknown-emscripten main.rs

>ВсС замСчания

@NikVolf Π½Π° самом Π΄Π΅Π»Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ emcc с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния EMMAKEN_CFLAGS .
(ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ вашС имя Ρ„Π°ΠΉΠ»Π° main.rs )

export EMMAKEN_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" 
rustc --target=wasm32-unknown-emscripten main.rs
Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

jmegaffin picture jmegaffin  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

wthrowe picture wthrowe  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

dwrensha picture dwrensha  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

defuz picture defuz  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

overvenus picture overvenus  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ