Я пытаюсь скомпилировать небольшой проект, который ссылается на библиотеку stati c (.a
) в /usr/local/lib
и файлы заголовков (.h
) в /usr/local/include/test
в автономный Wasm файл. Следующий код работает без ошибок компиляции.
main.cpp
#include <iostream>
#include "libtest/libtest.h"
int main(int argc, char *argv[]) {
LibTest Test;
std::cout << Test.version() << std::endl;
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.15)
project(test_project)
set(CMAKE_CXX_STANDARD 14)
include_directories(/usr/local/include)
link_directories(/usr/local/lib)
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} test)
Однако, когда я компилирую в wasm
, используя следующая команда:
emcc main.cpp -I/usr/local/include -Os -s WASM=1 -s SIDE_MODULE=1 -o main.wasm
Я получаю ошибку: Module not found: Can't resolve 'env'
при импорте файла wasm
в клиентское приложение.
Вот как я импортируя его:
const Component = dynamic({
loader: async () => {
const module = await import("../../main.wasm");
},
ssr: false,
});
ПРИМЕЧАНИЕ: Это будет работать нормально, если удалить импортированную библиотеку и делать что-либо еще (например, примеры функций Hello World
или add(x, y)
.)
Кто-нибудь сталкивался с этой проблемой?
Я предполагаю, что выполняемая мной команда emcc
не может правильно скомпилировать библиотеку.