Ошибка при связывании библиотек с Wasm-ld: тип символа mimsatch в функциях std - PullRequest
0 голосов
/ 08 апреля 2020

Сбой wasm-ld при связывании

wasm-ld: error: symbol type mimsatch: memcpy
>>> defined as WASM_SYMBOL_TYPE_DATA in libcliente_LIB.a(Server.cpp.o)

>>> defined as WASM_SYMBOL_TYPE_FUNCTION in deps/store/libStore.a(EmscriptenStore.cpp.o)

Сбой на всех функциях mem, memset, memcpy, memmove.

Дело в том, что libcliente_LIB и libStore были только что созданы с одним и тем же аргументы, включая из того же места.

Я пытался создать с -save-temps и проверить файлы .ii:

EmscriptenStore. cpp. ii

# 24 "C:\\emsdk\\upstream\\emscripten\\system\\include\\libc\\string.h" 2 3

void *memcpy (void *__restrict, const void *__restrict, size_t);
void *memmove (void *, const void *, size_t);
void *memset (void *, int, size_t);

Сервер. cpp .ii

# 24 "C:\\emsdk\\upstream\\emscripten\\system\\include\\libc\\string.h" 2 3

void *memcpy (void *__restrict, const void *__restrict, size_t);
void *memmove (void *, const void *, size_t);
void *memset (void *, int, size_t);

Если я не все понимаю, если они точно так же на файл .ii, затем они указывают на один и тот же символ в файле .o.

Почему wasm-ld жалуется, что это WASM_SYMBOL_TYPE_DATA на сервере. cpp .o, когда .ii показывает, что это функция?

1 Ответ

0 голосов
/ 09 апреля 2020

Я компилировал libcliente_LIB.a с -save-temps. Как только я удалил этот параметр, он заработал

...